different time tuple format

M

Maksim Kasimov

hi all, sorry if i'm reposting

why time.strptime and time.localtime returns tuple with different DST (9 item of the tuple)?
is there some of setting to fix the problem?


Python 2.2.3 (#1, May 31 2005, 11:33:52)
[GCC 2.95.4 20020320 [FreeBSD]] on freebsd4
Type "help", "copyright", "credits" or "license" for more information.
 
R

Rick Holbert

Like the last poster said, use %Z. On my Mandriva Linux system I get the
following results:
(2005, 6, 7, 15, 7, 12, 1, 158, 1)

Rick

Maksim said:
hi all, sorry if i'm reposting

why time.strptime and time.localtime returns tuple with different DST (9
item of the tuple)? is there some of setting to fix the problem?


Python 2.2.3 (#1, May 31 2005, 11:33:52)
[GCC 2.95.4 20020320 [FreeBSD]] on freebsd4
Type "help", "copyright", "credits" or "license" for more information.
 
M

Maksim Kasimov

Rick said:
Like the last poster said, use %Z. On my Mandriva Linux system I get the
following results:



(2005, 6, 7, 15, 7, 12, 1, 158, 1)

> (2005, 6, 7, 15, 7, 12, 1, 158, 1)

does not work at all: "ValueError: format mismatch"

i've check the value of time.tzname:
('EET', 'EEST')

and get the following (again):
(2005, 6, 7, 15, 7, 12, 6, 1, 0)
 
W

wittempj

In your case it is the EEST, as this is the DST timezone (see again:
http://docs.python.org/lib/module-time.html)

** martin@ubuntu:~ $ python
** Python 2.4.1 (#2, Mar 30 2005, 21:51:10)
** [GCC 3.3.5 (Debian 1:3.3.5-8ubuntu2)] on linux2
** Type "help", "copyright", "credits" or "license" for more
information.
** >>> import time
** >>> print time.tzname
** ('CET', 'CEST')
** >>> time.strptime("2005-06-07 15:07:12 CET", "%Y-%m-%d %H:%M:%S %Z")
** (2005, 6, 7, 15, 7, 12, 1, 158, 0)
** >>> time.strptime("2005-06-07 15:07:12 CEST", "%Y-%m-%d %H:%M:%S
%Z")
** (2005, 6, 7, 15, 7, 12, 1, 158, 1)
** >>>
 
M

Maksim Kasimov

seems like it is not a platform specific,
i think to solve the problem i need put settings in order (in php it is php.ini file) thus i'll have a portable code.
i've check the following code on my various servers, and it gives me different results:

import time
time.tzname
time.daylight
time.strptime("2005-06-07 15:07:12", "%Y-%m-%d %H:%M:%S")
time.strptime("2005-06-07 15:07:12 EEST", "%Y-%m-%d %H:%M:%S %Z")




Python 2.3.3 (#1, Feb 28 2004, 20:35:22)
[GCC 2.95.4 20020320 [FreeBSD]] on freebsd4
Type "help", "copyright", "credits" or "license" for more information.(2005, 6, 7, 15, 7, 12, 1, 158, 1)



Python 2.2.3 (#1, Oct 22 2004, 03:10:44)
[GCC 2.95.4 20020320 [FreeBSD]] on freebsd4
Type "help", "copyright", "credits" or "license" for more information.(2005, 6, 7, 15, 7, 12, 6, 1, 1)



In your case it is the EEST, as this is the DST timezone (see again:
http://docs.python.org/lib/module-time.html)

** martin@ubuntu:~ $ python
** Python 2.4.1 (#2, Mar 30 2005, 21:51:10)
** [GCC 3.3.5 (Debian 1:3.3.5-8ubuntu2)] on linux2
** Type "help", "copyright", "credits" or "license" for more
information.
** >>> import time
** >>> print time.tzname
** ('CET', 'CEST')
** >>> time.strptime("2005-06-07 15:07:12 CET", "%Y-%m-%d %H:%M:%S %Z")
** (2005, 6, 7, 15, 7, 12, 1, 158, 0)
** >>> time.strptime("2005-06-07 15:07:12 CEST", "%Y-%m-%d %H:%M:%S
%Z")
** (2005, 6, 7, 15, 7, 12, 1, 158, 1)
** >>>
 
W

wittempj

The names are at least platform specific, see below the names of the
timezones on my Windows NT 4 box

*** Python 2.3.4 (#53, May 25 2004, 21:17:02) [MSC v.1200 32 bit
(Intel)] on win32
*** Type "help", "copyright", "credits" or "license" for more
information.
*** >>> import time
*** >>> print time.tzname
*** ('W. Europe Standard Time', 'W. Europe Daylight Time')
*** >>>
 
M

Maksim Kasimov

yes, i agree, on my WinXP it gives another values.

but my question is how to setup the python (or OS) to make it gives the same results when i call
time.strptime("2005-06-07 15:07:12", "%Y-%m-%d %H:%M:%S")
on various servers (and maybe with various OS)?

for now, i can't get it even with the same OS.
and i would like to set time string exactly as "2005-06-07 15:07:12", without "CEST", "EEST" and so on, because as you've notice before, it is different on a variuos systems


The names are at least platform specific, see below the names of the
timezones on my Windows NT 4 box

*** Python 2.3.4 (#53, May 25 2004, 21:17:02) [MSC v.1200 32 bit
(Intel)] on win32
*** Type "help", "copyright", "credits" or "license" for more
information.
*** >>> import time
*** >>> print time.tzname
*** ('W. Europe Standard Time', 'W. Europe Daylight Time')
*** >>>
 
W

wittempj

It is probably the best to calculate back to UTC.

Assume "2005-06-07 15:07:12" the local time, then convert it as
follows to UTC. Use the UTC time to store/manipulate/whatever you want
to do.

import time
t = time.mktime(time.strptime("2005-06-07 15:07:12", "%Y-%m-%d
%H:%M:%S"))

print time.ctime(t)

offset = time.timezone
if time.daylight:
offset = time.altzone
t += offset
print time.ctime(t)
 
M

Maksim Kasimov

maybe you are right, i've searched in google groups - such a question was posted to comp.lang.python many times and i has not found (yet) the answer on "how to tune up the output of time.strptime()?"
 
M

Magnus Lycka

Maksim said:
hi all, sorry if i'm reposting

why time.strptime and time.localtime returns tuple with different DST (9
item of the tuple)?

I've been bitten by the quirks in the time modules so many times
that I would advice against using it for any date handling. It's
ok for time measurement as long as you understand the differences
between time.clock and time.time on your particular platform. You
should be aware that it's just a thin wrapper around the c libs,
and they seem to disagree wildly among platforms on how things
should be done. On NT 4 for instance, the C time libs was a few
weeks off concerning when DST starts in Europe (but the win32 API
was correct), time zone names vary among platforms etc. There is
an inverse of localtime() in mktime(), but no inverse of gmtime()
etc. Yuk!

I would suggest that you either update Python to 2.4 (or 2.3) and
use the datetime module, or that you get mxDateTime if you are
stuck with 2.2.
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top