[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Time confusion?
From: |
John W. Eaton |
Subject: |
Time confusion? |
Date: |
Wed, 10 Mar 2004 12:49:56 -0600 |
On 10-Mar-2004, Vic Norton <address@hidden> wrote:
| Maybe this is a bug. Maybe it isn't. In any case, it is very
| confusing. I'm talking about the relationship between time structures
| and the functions strptime, strftime, and mktime.
|
| Start with the date 23-Feb-04. That was a Monday. Do strptime to get
| a TM_STRUCT and then do strftime to that. This changes the day. Now
| 23-Feb-04 is Sunday.
|
| OK, let's get down to real time. Do mktime to the TM_STRUCT to see
| that the 23-Feb-04 date is 1077512400 seconds after after 1-Jan-1970
| 00:00:00 CUT. (1077512400 is also the time I get from the str2time
| function in the Date::Parse perl module.) Now do localtime to
| 1077512400 and strftime to the resulting TM_STRUCT to find out that
| 23-Feb-04 is back to Monday.
|
| Something is very strange here. One date just can't be on two different days!
|
| Regards,
|
| Vic
|
| P.S. Here is the test and the output.
|
| === test ===
| % test1.m
|
| date0 = '23-Feb-04'
| tm_struct1 = strptime(date0, "%e-%b-%y")
| date1 = strftime("%a, %e-%b-%y", tm_struct1)
| time1 = mktime(tm_struct1)
| tm_struct2 = localtime(time1)
| date2 = strftime("%a, %e-%b-%y", tm_struct2)
|
| === output ===
| octave> test1
| date0 = 23-Feb-04
| tm_struct1 =
| {
| hour = 0
| isdst = 0
| mday = 23
| min = 0
| mon = 1
| sec = 0
| usec = 0
| wday = 0
| yday = 0
| year = 104
| zone =
| }
|
| date1 = Sun, 23-Feb-04
| time1 = 1077512400
| tm_struct2 =
| {
| hour = 0
| isdst = 0
| mday = 23
| min = 0
| mon = 1
| sec = 0
| usec = 0
| wday = 1
| yday = 53
| year = 104
| zone = EST
| }
|
| date2 = Mon, 23-Feb-04
What version of Octave are you using? I don't see this problem with
the current sources. I seem to remember fixing a bug that could have
been related to this problem, but I don't remember precisely what it
was and I can't find a message about it in the archives.
jwe
-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.
Octave's home on the web: http://www.octave.org
How to fund new projects: http://www.octave.org/funding.html
Subscription information: http://www.octave.org/archive.html
-------------------------------------------------------------
Time confusion?, John W. Eaton, 2004/03/11