date and time comparison how to

Discussion in 'Python' started by noydb, Oct 29, 2012.

  1. noydb

    noydb Guest

    All,

    I need help with a date and time comparison.

    Say a user enters a date-n-time and a file on disk. I want to compare the date and time of the file to the entered date-n-time; if the file is newer than the entered date-n-time, add the file to a list to process.

    How best to do? I have looked at the datetime module, tried a few things, no luck.

    Is os.stat a part of it? Tried, not sure of the output, the st_mtime/st_ctime doesnt jive with the file's correct date and time. ??

    Any help would be appreciated!
    noydb, Oct 29, 2012
    #1
    1. Advertising

  2. noydb

    Gary Herron Guest

    On 10/29/2012 04:13 PM, noydb wrote:
    > All,
    >
    > I need help with a date and time comparison.
    >
    > Say a user enters a date-n-time and a file on disk. I want to compare the date and time of the file to the entered date-n-time; if the file is newer than the entered date-n-time, add the file to a list to process.
    >
    > How best to do? I have looked at the datetime module, tried a few things, no luck.
    >
    > Is os.stat a part of it? Tried, not sure of the output, the st_mtime/st_ctime doesnt jive with the file's correct date and time. ??
    >
    > Any help would be appreciated!


    Use the datetime module (distributed with Python) to compare date/times.

    You can turn a filesystem time into a datetime with something like the
    following:
    import datetime, os, stat
    mtime = os.lstat(filename)[stat.ST_MTIME] // the
    files modification time
    dt = datetime.datetime.fromtimestamp(mtime)


    --
    Dr. Gary Herron
    Department of Computer Science
    DigiPen Institute of Technology
    (425) 895-4418
    Gary Herron, Oct 30, 2012
    #2
    1. Advertising

  3. noydb

    MRAB Guest

    On 2012-10-30 00:04, Gary Herron wrote:
    > On 10/29/2012 04:13 PM, noydb wrote:
    >> All,
    >>
    >> I need help with a date and time comparison.
    >>
    >> Say a user enters a date-n-time and a file on disk. I want to compare the date and time of the file to the entered date-n-time; if the file is newer than the entered date-n-time, add the file to a list to process.
    >>
    >> How best to do? I have looked at the datetime module, tried a few things, no luck.
    >>
    >> Is os.stat a part of it? Tried, not sure of the output, the st_mtime/st_ctime doesnt jive with the file's correct date and time. ??
    >>
    >> Any help would be appreciated!

    >
    > Use the datetime module (distributed with Python) to compare date/times.
    >
    > You can turn a filesystem time into a datetime with something like the
    > following:
    > import datetime, os, stat
    > mtime = os.lstat(filename)[stat.ST_MTIME] // the
    > files modification time
    > dt = datetime.datetime.fromtimestamp(mtime)
    >
    >

    Instead of os.lstat(filename)[stat.ST_MTIME] you could use
    os.path.getmtime(filename).
    MRAB, Oct 30, 2012
    #3
  4. noydb

    noydb Guest

    Thanks, I did find this...

    pdf_timeStamp = time.strftime("%m%d%y%H%M%S",time.localtime(os.path.getmtime(pdf)))

    >> pdf_timestamp
    >> '102909133000'


    .... but now how to do the comparison? Cannot just do a raw string comparison, gotta declare it a date
    noydb, Oct 30, 2012
    #4
  5. noydb

    noydb Guest

    Thanks, I did find this...

    pdf_timeStamp = time.strftime("%m%d%y%H%M%S",time.localtime(os.path.getmtime(pdf)))

    >> pdf_timestamp
    >> '102909133000'


    .... but now how to do the comparison? Cannot just do a raw string comparison, gotta declare it a date
    noydb, Oct 30, 2012
    #5
  6. noydb

    noydb Guest

    if I do time.time() I get 1351562187.757, do it again I get 1351562212.2650001 --- so I can compare those, the latter is later then the former. Good.SO how do I turn pdf_timeStamp (a string) above into time in this (as from time.time()) format? Am I on the right track -- is that the way to do a time comparison?
    noydb, Oct 30, 2012
    #6
  7. noydb

    noydb Guest

    if I do time.time() I get 1351562187.757, do it again I get 1351562212.2650001 --- so I can compare those, the latter is later then the former. Good.SO how do I turn pdf_timeStamp (a string) above into time in this (as from time.time()) format? Am I on the right track -- is that the way to do a time comparison?
    noydb, Oct 30, 2012
    #7
  8. noydb

    noydb Guest

    I guess I get there eventually!
    This seems to work

    pdf_timeStamp = time.strftime("%m%d%y%H%M%S",time.localtime(os.path.getmtime(pdf)))
    intermediateTime = time.strptime(pdf_timeStamp, "%m%d%y%H%M%S")
    pdfFile_compareTime = time.mktime(intermediateTime)

    (and I'll do the same to the user entered date-n-time and then compare)


    Lastly, so can anyone chime in and tell me if this is a good method or not? Is there a better way?
    noydb, Oct 30, 2012
    #8
  9. noydb

    noydb Guest

    I guess I get there eventually!
    This seems to work

    pdf_timeStamp = time.strftime("%m%d%y%H%M%S",time.localtime(os.path.getmtime(pdf)))
    intermediateTime = time.strptime(pdf_timeStamp, "%m%d%y%H%M%S")
    pdfFile_compareTime = time.mktime(intermediateTime)

    (and I'll do the same to the user entered date-n-time and then compare)


    Lastly, so can anyone chime in and tell me if this is a good method or not? Is there a better way?
    noydb, Oct 30, 2012
    #9
  10. noydb

    Dave Angel Guest

    On 10/29/2012 10:13 PM, noydb wrote:
    > I guess I get there eventually!
    > This seems to work
    >
    > pdf_timeStamp = time.strftime("%m%d%y%H%M%S",time.localtime(os.path.getmtime(pdf)))
    > intermediateTime = time.strptime(pdf_timeStamp, "%m%d%y%H%M%S")
    > pdfFile_compareTime = time.mktime(intermediateTime)
    >
    > (and I'll do the same to the user entered date-n-time and then compare)
    >
    >
    > Lastly, so can anyone chime in and tell me if this is a good method or not? Is there a better way?


    Please read the rest of the thread in particular the message 3 hours ago
    from Gary Herron

    import datetime, os, stat
    mtime = os.lstat(filename)[stat.ST_MTIME] // the files
    modification time
    dt = datetime.datetime.fromtimestamp(mtime)

    Now you can compare two datetimes simply by
    if dt1 < dt2:

    Or you can subtract them, and examine the difference.

    What's the need for all that string conversion stuff?



    --

    DaveA
    Dave Angel, Oct 30, 2012
    #10
  11. noydb

    MRAB Guest

    On 2012-10-30 03:11, Dave Angel wrote:
    > On 10/29/2012 10:13 PM, noydb wrote:
    >> I guess I get there eventually!
    >> This seems to work
    >>
    >> pdf_timeStamp = time.strftime("%m%d%y%H%M%S",time.localtime(os.path.getmtime(pdf)))
    >> intermediateTime = time.strptime(pdf_timeStamp, "%m%d%y%H%M%S")
    >> pdfFile_compareTime = time.mktime(intermediateTime)
    >>
    >> (and I'll do the same to the user entered date-n-time and then compare)
    >>
    >>
    >> Lastly, so can anyone chime in and tell me if this is a good method or not? Is there a better way?

    >
    > Please read the rest of the thread in particular the message 3 hours ago
    > from Gary Herron
    >
    > import datetime, os, stat
    > mtime = os.lstat(filename)[stat.ST_MTIME] // the files
    > modification time
    > dt = datetime.datetime.fromtimestamp(mtime)
    >
    > Now you can compare two datetimes simply by
    > if dt1 < dt2:
    >
    > Or you can subtract them, and examine the difference.
    >
    > What's the need for all that string conversion stuff?
    >

    +1

    Incidentally, the best order for dates is year (4 digits - remember
    Y2K? :)) then month then day.
    MRAB, Oct 30, 2012
    #11
  12. noydb

    noydb Guest

    On Monday, October 29, 2012 11:11:55 PM UTC-4, Dave Angel wrote:
    > On 10/29/2012 10:13 PM, noydb wrote:
    >
    > > I guess I get there eventually!

    >
    > > This seems to work

    >
    > >

    >
    > > pdf_timeStamp = time.strftime("%m%d%y%H%M%S",time.localtime(os.path.getmtime(pdf)))

    >
    > > intermediateTime = time.strptime(pdf_timeStamp, "%m%d%y%H%M%S")

    >
    > > pdfFile_compareTime = time.mktime(intermediateTime)

    >
    > >

    >
    > > (and I'll do the same to the user entered date-n-time and then compare)

    >
    > >

    >
    > >

    >
    > > Lastly, so can anyone chime in and tell me if this is a good method or not? Is there a better way?

    >
    >
    >
    > Please read the rest of the thread in particular the message 3 hours ago
    >
    > from Gary Herron
    >
    >
    >
    > import datetime, os, stat
    >
    > mtime = os.lstat(filename)[stat.ST_MTIME] // the files
    >
    > modification time
    >
    > dt = datetime.datetime.fromtimestamp(mtime)
    >
    >
    >
    > Now you can compare two datetimes simply by
    >
    > if dt1 < dt2:
    >
    >
    >
    > Or you can subtract them, and examine the difference.
    >
    >
    >
    > What's the need for all that string conversion stuff?
    >
    >
    >
    >
    >
    >
    >
    > --
    >
    >
    >
    > DaveA


    okay, I see.
    But for the user supplied date... I'm not sure of the format just yet... testing with a string for now (actual date-date might be possible, tbd later), so like '10292012213000' (oct 29, 2012 9:30pm). How would you get that input into a format to compare with dt above?
    noydb, Oct 30, 2012
    #12
  13. noydb

    noydb Guest

    On Monday, October 29, 2012 11:11:55 PM UTC-4, Dave Angel wrote:
    > On 10/29/2012 10:13 PM, noydb wrote:
    >
    > > I guess I get there eventually!

    >
    > > This seems to work

    >
    > >

    >
    > > pdf_timeStamp = time.strftime("%m%d%y%H%M%S",time.localtime(os.path.getmtime(pdf)))

    >
    > > intermediateTime = time.strptime(pdf_timeStamp, "%m%d%y%H%M%S")

    >
    > > pdfFile_compareTime = time.mktime(intermediateTime)

    >
    > >

    >
    > > (and I'll do the same to the user entered date-n-time and then compare)

    >
    > >

    >
    > >

    >
    > > Lastly, so can anyone chime in and tell me if this is a good method or not? Is there a better way?

    >
    >
    >
    > Please read the rest of the thread in particular the message 3 hours ago
    >
    > from Gary Herron
    >
    >
    >
    > import datetime, os, stat
    >
    > mtime = os.lstat(filename)[stat.ST_MTIME] // the files
    >
    > modification time
    >
    > dt = datetime.datetime.fromtimestamp(mtime)
    >
    >
    >
    > Now you can compare two datetimes simply by
    >
    > if dt1 < dt2:
    >
    >
    >
    > Or you can subtract them, and examine the difference.
    >
    >
    >
    > What's the need for all that string conversion stuff?
    >
    >
    >
    >
    >
    >
    >
    > --
    >
    >
    >
    > DaveA


    okay, I see.
    But for the user supplied date... I'm not sure of the format just yet... testing with a string for now (actual date-date might be possible, tbd later), so like '10292012213000' (oct 29, 2012 9:30pm). How would you get that input into a format to compare with dt above?
    noydb, Oct 30, 2012
    #13
  14. noydb

    Dave Angel Guest

    On 10/30/2012 12:20 AM, noydb wrote:
    > On Monday, October 29, 2012 11:11:55 PM UTC-4, Dave Angel wrote:
    >> On 10/29/2012 10:13 PM, noydb wrote:
    >>
    >>> I guess I get there eventually!

    >>
    >>> <snip>

    >>
    >>

    >
    > okay, I see.
    > But for the user supplied date... I'm not sure of the format just yet... testing with a string for now (actual date-date might be possible, tbd later), so like '10292012213000' (oct 29, 2012 9:30pm). How would you get that input into a format to compare with dt above?
    >


    See http://docs.python.org/2/library/datetime.html

    There are a number of constructors for datetime. For example,

    now = datetime.datetime.now()

    spec = datetime.strptime(datstring, format)

    spec = datetime.datetime(year, month, day[, hour[, minute[, second[,
    microsecond)

    In each case, you have an optional tz for timezone. Or if possible, use
    utc versions of these functions to get "greenwich" times. tz is one of
    the biggest pains, and the quirks vary between operating systems and
    filesystems. If possible in your environment, use utcnow,
    utcfromtimestamp, etc.


    --

    DaveA
    Dave Angel, Oct 30, 2012
    #14
  15. Gary Herron wrote:

    > On 10/29/2012 04:13 PM, noydb wrote:

    > > All,
    > >
    > > I need help with a date and time comparison.
    > >
    > > Say a user enters a date-n-time and a file on disk. I want to compare the date and time of the file to the

    > entered date-n-time; ifthe file is newer than the entered date-n-time, add the file to a list to process.

    > >
    > > How best to do? I have looked at the datetimemodule, tried a few things, no luck.
    > >
    > > Is os.stat a part of it? Tried, not sure of the output, the st_mtime/st_ctime doesnt jivewith the file's

    > correct date and time. ??

    > >
    > > Any help would be appreciated!

    >
    > Use the datetime module (distributed with Python) to compare date/times.
    >
    > You can turn a filesystem time into a datetime with something like the
    > following:
    > import datetime, os, stat
    > mtime = os.lstat(filename)[stat.ST_MTIME] // the
    > files modification time
    > dt = datetime.datetime.fromtimestamp(mtime)
    >


    You could also write that as:

    datetime.datetime.fromtimestamp( os.path.getmtime( path ) )


    Ramit P


    This email is confidential and subject to important disclaimers and
    conditions including on offers for the purchase or sale of
    securities, accuracy and completeness of information, viruses,
    confidentiality, legal privilege, and legal entity disclaimers,
    available at http://www.jpmorgan.com/pages/disclosures/email.
    Prasad, Ramit, Oct 31, 2012
    #15
  16. On Mon, 2012-10-29 at 16:13 -0700, noydb wrote:
    > All,
    > I need help with a date and time comparison.
    > Say a user enters a date-n-time and a file on disk. I want to compare
    > the date and time of the file to the entered date-n-time; if the file
    > is newer than the entered date-n-time, add the file to a list to
    > process.
    > How best to do? I have looked at the datetime module, tried a few
    > things, no luck.
    > Is os.stat a part of it? Tried, not sure of the output, the
    > st_mtime/st_ctime doesnt jive with the file's correct date and
    > time. ??
    > Any help would be appreciated!


    Date and time is much more complicated then people guess at first.

    <http://taaviburns.ca/what_you_need_to_know_about_datetimes/datetime_transforms.html>
    <http://www.whitemiceconsulting.com/2012/10/setting-course-for-utc.html>

    What do you mean by "st_mtime/st_ctime doesnt jive with the file's
    correct date"? Is it off my some offset, or does it completely not
    match?
    Adam Tauno Williams, Nov 2, 2012
    #16
    1. Advertising

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. Chris Berg
    Replies:
    0
    Views:
    779
    Chris Berg
    Oct 27, 2003
  2. Peter Grison

    Date, date date date....

    Peter Grison, May 28, 2004, in forum: Java
    Replies:
    10
    Views:
    3,231
    Michael Borgwardt
    May 30, 2004
  3. Keith Cochrane
    Replies:
    2
    Views:
    602
    Keith Cochrane
    Aug 6, 2006
  4. Deepu
    Replies:
    1
    Views:
    228
    ccc31807
    Feb 7, 2011
  5. noydb
    Replies:
    7
    Views:
    158
    noydb
    Dec 10, 2012
Loading...

Share This Page