Development

NAVIGATION
CATEGORIES
REFERRENCE
LINKS
  • different time tuple format

    10 answers - 524 bytes - related search similar search Add To My Delicious Add To My Stumble Upon Add To My Google Mark Add To My Facebook Add To My Digg Add To My Reddit

    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.
    import time
    time.strptime("2005-06-07 21:00:00", "%Y-%m-%d %H:%M:%S")
    (2005, 6, 7, 21, 0, 0, 6, 1, 0)
    time.localtime()
    (2005, 6, 7, 21, 2, 39, 1, 158, 1)
  • No.1 | | 191 bytes | |

    tells us the last element
    is the DST flag, on your computer that applies for localtime(). To get
    this with strptime() you have to tweak the %Z formatter - this is
    platform specific.
  • No.2 | | 831 bytes | |

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

    time.localtime()
    (2005, 6, 7, 15, 7, 12, 1, 158, 1)
    time.strptime("2005-06-07 15:07:12 EDT", "%Y-%m-%d %H:%M:%S %Z")
    (2005, 6, 7, 15, 7, 12, 1, 158, 1)

    Rick

    Maksim Kasimov wrote:

    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.
    import time
    time.strptime("2005-06-07 21:00:00", "%Y-%m-%d %H:%M:%S")
    (2005, 6, 7, 21, 0, 0, 6, 1, 0)
    time.localtime()
    (2005, 6, 7, 21, 2, 39, 1, 158, 1)
  • No.3 | | 585 bytes | |

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

    time.localtime()

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

    time.strptime("2005-06-07 15:07:12 EDT", "%Y-%m-%d %H:%M:%S %Z")
    (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):

    time.strptime("2005-06-07 15:07:12 EET", "%Y-%m-%d %H:%M:%S %Z")
    (2005, 6, 7, 15, 7, 12, 6, 1, 0)
  • No.4 | | 607 bytes | |

    In your case it is the EEST, as this is the DST timezone (see again:
    )

    ** 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)
    **
  • No.5 | | 2036 bytes | |

    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.
    import time
    time.tzname
    ('EET', 'EEST')
    time.daylight
    1
    time.strptime("2005-06-07 15:07:12", "%Y-%m-%d %H:%M:%S")
    (2005, 6, 7, 15, 7, 12, 1, 158, -1)
    time.strptime("2005-06-07 15:07:12 EEST", "%Y-%m-%d %H:%M:%S %Z")
    (2005, 6, 7, 15, 7, 12, 1, 158, 1)

    Python 2.2.3 (#1, 22 2004, 03:10:44)
    [GCC 2.95.4 20020320 [FreeBSD]] on freebsd4
    Type "help", "copyright", "credits" or "license" for more information.
    import time
    time.tzname
    ('EET', 'EEST')
    time.daylight
    1
    time.strptime("2005-06-07 15:07:12", "%Y-%m-%d %H:%M:%S")
    (2005, 6, 7, 15, 7, 12, 6, 1, 0)
    time.strptime("2005-06-07 15:07:12 EEST", "%Y-%m-%d %H:%M:%S %Z")
    (2005, 6, 7, 15, 7, 12, 6, 1, 1)

    wittempj (AT) hotmail (DOT) com wrote:
    In your case it is the EEST, as this is the DST timezone (see again:
    )

    ** 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)
    **
  • No.6 | | 389 bytes | |

    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')
  • No.7 | | 938 bytes | |

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

    but my question is how to setup the python (or S) 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 S)?

    for now, i can't get it even with the same S.
    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

    wittempj (AT) hotmail (DOT) com wrote:
    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')
  • No.8 | | 446 bytes | |

    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)
  • No.9 | | 699 bytes | |

    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()?"

    wittempj (AT) hotmail (DOT) com wrote:
    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)
  • No.10 | | 1031 bytes | |

    Maksim Kasimov wrote:
    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. 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.

Re: different time tuple format


max 4000 letters.
Your nickname that display:
In order to stop the spam: 0 + 9 =
QUESTION ON "Development"

EMSDN.COM