Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
Per Westermark
09/06/12 05:21
Read: 680 times
Sweden


 
#188252 - No - multiplier should not be 366
Responding to: Stefan Kanev's previous message
No, the multiplier should not be 366. If playing with floating point and setting a suitable year zero, it should be 365.2425 since that is the result of:
365 (the standard year)
+ 0.25 (1/4 = normal leap year rule)
- 0.01 (1/100 = centuries are not leap years)
+ 0.0025 (1/400 = 1600, 2000, 2400, ... are centuries but still leap years)

In this case, there is an add for the 1/4 rule.
When the algorithm don't need to support as early as year 1900 or as late as 2100, then the 1/100 and 1/400 rules can be removed giving simpler code in an embedded product (while introducing a "y2k" error).

So the simplification then is a multiplier of 365 (the best we can do with integers) and a check how many 4-year cycles extra to compensate for the 366th day of the leap years.

The difference compared to the standard Unix implementation (if we ignore the covered range) is that the Unix functions represents the current year as 112 since the tm.tm_year field is set to year-1900.

List of 22 messages in thread
TopicAuthorDate
Error in conversion from Unix EPOCH       Raghunathan      09/05/12 10:03      
   zero        J. Guy      09/05/12 10:32      
   DMonth[month-1] ????        Stefan KAnev      09/05/12 11:50      
      Stefan is correct and...      Daniel Contarino      09/05/12 14:11      
         +4 - 100 + 400      Per Westermark      09/05/12 14:46      
            right, but...      Stefan KAnev      09/05/12 14:54      
               88 years is a long time      Per Westermark      09/05/12 14:55      
                  That is what they said in the 60's      Neil Kurzman      09/06/12 13:46      
      Thanks. Problem solved      Raghunathan      09/05/12 22:26      
         Cross-checking important      Per Westermark      09/06/12 00:10      
            Just a foot note about the year      Per Westermark      09/06/12 03:00      
               ?back conversion      Stefan KAnev      09/06/12 04:56      
                  No - multiplier should not be 366      Per Westermark      09/06/12 05:21      
                     Running out of seconds > 1970      David Prentice      09/06/12 10:00      
                        signed is actually common - to support dates before 1970      Per Westermark      09/06/12 12:42      
                        Will You Now.      Neil Kurzman      09/06/12 13:53      
                           Have you considered leap seconds?      KONSTANTINOS L. ANGELIS      09/07/12 05:00      
                              Leap seconds can almost always be ignored        Per Westermark      09/07/12 05:37      
                                 Time is passing anyway or is it just an illusion?      KONSTANTINOS L. ANGELIS      09/07/12 07:00      
                                    Missiles? Leap seconds contra way larger drift...      Per Westermark      09/07/12 07:45      
         No such thing as a free lunch!      Andy Neil      09/07/12 15:28      
   Link?      Andy Neil      09/08/12 03:16      

Back to Subject List