Time (leap year??)

Discussion in 'Ruby' started by csjasnoch@wisc.edu, Aug 31, 2005.

  1. Guest

    Is there a simple way to see if a year is a leap year (rather than
    writting an algorithm I wanted to check if it is already implimented
    first)

    It would be kewl if there was just a check on a Time var


    Like,

    now = Time.new
    flag = now.leapyear?
    , Aug 31, 2005
    #1
    1. Advertising

  2. Guest

    I know I could do somethine like this (and it works for future years)


    now = Time.new

    leap = now.year%4

    if(learp == 0)
    flag = true



    #############

    But if I were to use mktime and involved past dates I would have to be
    weary of the millenias.

    How does it work
    Every 4 years, every hundred but not every millenia.. Or is it also not
    every 100?

    FYI I am trying to make a weekday hash generator. So I send the year
    and month and get all weekdays for every day of the month.
    , Aug 31, 2005
    #2
    1. Advertising

  3. Hi --

    On Thu, 1 Sep 2005, wrote:

    > Is there a simple way to see if a year is a leap year (rather than
    > writting an algorithm I wanted to check if it is already implimented
    > first)
    >
    > It would be kewl if there was just a check on a Time var
    >
    >
    > Like,
    >
    > now = Time.new
    > flag = now.leapyear?


    Yes:

    irb(main):023:0> Date.today.leap?
    => false
    irb(main):024:0> (Date.today << 12).leap?
    => true


    David

    --
    David A. Black
    David A. Black, Aug 31, 2005
    #3
  4. Kirk Haines Guest

    On Wednesday 31 August 2005 2:06 pm, wrote:
    > Is there a simple way to see if a year is a leap year (rather than
    > writting an algorithm I wanted to check if it is already implimented
    > first)
    >
    > It would be kewl if there was just a check on a Time var


    irb(main):001:0> require 'date'
    => true
    irb(main):002:0> d = Date.parse(Time.now.to_s)
    => #<Date: 4907227/2,0,2299161>
    irb(main):003:0> d.to_s
    => "2005-08-31"
    irb(main):004:0> d.leap?
    => false


    Kirk Haines
    Kirk Haines, Aug 31, 2005
    #4
  5. Guest

    Thanks Kirk. That should get me to where I need.
    , Aug 31, 2005
    #5
  6. Kirk Haines Guest

    On Wednesday 31 August 2005 2:26 pm, wrote:
    > Thanks Kirk. That should get me to where I need.


    As you saw, there are more concise ways to do a check for today, but that
    general pattern will work for any date that you need to parse. If you are
    going from Time to Date a lot, you might want to define something like this:

    class Time
    def to_date
    Date.new(year,month,day)
    end
    end

    Take a look at the difference between Date/DateTime and Time classes. They
    are very different. Date/time is stored in a completely different format,
    and for the most part they offer completely different sets of methods.


    Kirk Haines
    Kirk Haines, Aug 31, 2005
    #6
  7. On Aug 31, 2005, at 2:11 PM, wrote:
    > How does it work
    > Every 4 years, every hundred but not every millenia.. Or is it also
    > not
    > every 100?


    "Every year divisible by 4 is a leap year.
    But every year divisible by 100 is NOT a leap year
    Unless the year is also divisible by 400, then it is still a leap year."
    -- http://www.timeanddate.com/date/leapyear.html

    So to calculate it on your own:
    irb(main):001:0> def is_leap?( year ); year % 4 == 0 && ( year % 100 !
    = 0 || year % 400 == 0 ); end
    => nil
    irb(main):002:0> is_leap? 1996
    => true
    irb(main):003:0> is_leap? 1997
    => false
    irb(main):004:0> is_leap? 2000
    => true
    irb(main):005:0> is_leap? 2100
    => false
    irb(main):006:0> is_leap? 2300
    => false
    irb(main):007:0> is_leap? 2400
    => true
    Gavin Kistner, Sep 1, 2005
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Hai Nguyen

    Date Validation Expression and Leap Year

    Hai Nguyen, Feb 26, 2004, in forum: ASP .Net
    Replies:
    1
    Views:
    3,303
    Hans Kesting
    Feb 27, 2004
  2. Wen
    Replies:
    4
    Views:
    452
    Simon Saunders
    Dec 12, 2003
  3. Protoman
    Replies:
    14
    Views:
    537
  4. Replies:
    8
    Views:
    487
    Howard
    Mar 30, 2007
  5. Replies:
    39
    Views:
    1,599
    Charlie Gordon
    Nov 12, 2007
Loading...

Share This Page