time.localtime() Format Question

Discussion in 'Python' started by OleMacGeezer, Aug 20, 2006.

  1. OleMacGeezer

    OleMacGeezer Guest

    Hello Everyone,

    I am a brand new Python programmer with barely a month of
    experience under my belt.

    Here are my specs:

    Mac OSX Panther 10.3.9
    Jython 2.1 implementation with Hermes BBS python module installed

    And now the problem...

    Right now I am having a small problem figuring out how to
    properly format the "User Last Log-On" date for the new
    external/door that I am writing for our Hermes BBS.

    Initially, I was using the following in my user
    initialization function near the top of the code:

    user.data.usrUndrLast = time.localtime()

    "user.data.usrUndrLast" is a user data object that I created
    to display the last time that a person used the external. As
    you can see, I an setting the value of the object to

    The problem is that the above code gave me a long string like

    (2006, 8, 19, 23, 39, 15, 5, 231, 0)

    Well, that obviously was not what I wanted or needed. I don't
    need seconds, or whatever that is that follows after
    seconds...And that isn't the format I wanted either.

    So I scrounged around in the example code for another
    external I have here, as well as in the hermes.py, (module
    which contains some of the BBS's proprietary functions), the
    jython-2.1 folder, (Python implementation I am using with the
    BBS), and even in my OSX Python installation, and then also
    on the web, looking for a clue regarding how to get it to do
    what I want it to do.

    I figured out that adding [:3] like this:

    user.data.usrUndrLast = time.localtime()[:3]

    ....would reduce it to just "(2006, 8, 19)", but that is still
    not what I want it to do. The format is wrong.

    I found a lot of interesting stuff inside of "rfc822.py"
    concerning date and time formats, but I am still not grasping
    quite how to do this.

    Right now, I am getting a TypeError, I guess because
    time.localtime only deals with integers, and I am trying to
    throw strings at it as well, like this:

    user.data.usrUndrLast = time.localtime('%a, %d %b %Y')

    I was hoping that the above code would produce something like this:

    Sun 20 Aug 2006

    ....but what I am getting is a TypeError which states:

    "TypeError: localtime(): 1st arg can't be coerced to double"

    So at this point, I am pretty stumped. In the list of
    players, I just want it to show when they were last logged
    into the external, preferably in one of the following

    Sun 20 Aug 2006
    Sun Aug 20 2006
    Aug 20 2006

    Once the above code, (user.data.usrUndrLast = time.localtime),
    initializes their last log-on date, I am using the results in
    a user list by appending the data to the user list like this:

    for u in external.users.values():
    'name': u.data.usrUndrName,
    'levl': u.data.usrUndrLevl,
    'scor': u.data.usrUndrScor,
    'last': u.data.usrUndrLast, # The one we're dealing with

    The above list code queries the external for the values that
    it has stored for each user. When it gets to the "last" item
    in the list, the external is supposed to send it the value
    for "u.data.usrUndrLast", (which it does), which is filled in
    with the value of "time.localtime()" Once the list is made,
    the "last" code will be displayed in the user list using this
    piece of code:

    print Style(fgLtGreen)('%(last)-10s' % markUsr)

    For the record, I do have "import time" at the top of my
    code. I looked all over the place for a module called
    "time.py", but couldn't find one. So I didn't quite
    understand where "time.py" was being imported from. I finally
    figured that it must just be a function which is being
    imported from one of the jython modules that I was looking
    at...although I never found an exact function called "time()"
    or "time.localtime().

    So if anyone can lend me a hand with this, I'd really appreciate
    it. I am really working hard, and doing the best I can to learn
    Python, (my very first programming language), but I still require
    some guidance.

    If anyone here can tell me how to get the results that I want, I
    would really appreciate if you would write to me directly at:

    Thanks so much.
    OleMacGeezer, Aug 20, 2006
    1. Advertisements

  2. OleMacGeezer

    Greg Krohn Guest

    OleMacGeezer wrote:
    > Hello Everyone,


    > (2006, 8, 19, 23, 39, 15, 5, 231, 0)
    > Well, that obviously was not what I wanted or needed. I don't
    > need seconds, or whatever that is that follows after
    > seconds...And that isn't the format I wanted either.

    I'm sorry I didn't have time to grep your entire post, but maybe this
    will help:

    >>> import time
    >>> t = time.localtime()
    >>> t

    (2006, 8, 20, 12, 48, 52, 6, 232, 1)
    >>> time.strftime('%a, %d %b %Y', t)

    'Sun, 20 Aug 2006'

    Greg Krohn, Aug 20, 2006
    1. Advertisements

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. Stephen
    Purl Gurl
    May 19, 2004
  2. Gerry George

    Time::localtime problems

    Gerry George, May 26, 2004, in forum: Perl
    Joe Smith
    May 26, 2004
  3. KW
    Eric Sosman
    Dec 8, 2004
  4. Summu82
    Richard Heathfield
    Jun 7, 2006
  5. Rich Bogle

    time configuration for localtime

    Rich Bogle, Apr 23, 2004, in forum: Perl Misc
    Glenn Jackman
    Apr 23, 2004
  6. Dan Vesma
    Brian Wakem
    Oct 7, 2004
  7. Leendert Bottelberghs

    time zone offset calc with localtime and gmtime

    Leendert Bottelberghs, Apr 4, 2005, in forum: Perl Misc
    Apr 5, 2005
  8. triwolf
    Joe Smith
    Feb 6, 2006