date-time comparison, aware vs naive

N

noydb

I want to compare a user entered date-and-time against the date-and-time ofa pdf file. I posted on this (how to get a file's date-time) before, was advised to do it like:

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

I am having problems with the comparison, that line is failing. I think I may have figured out the issue -- I think it is a matter of the file's timebeing 'aware' and the user-input date-time being 'naive'. The user-input date-time has a parameter type of date (calender and time tool supplied to enter), but is it 'aware'? The comparison is not working so I think that it is not aware. I can successfully compare two pdf file times against one another. So, is there a way to cast that user-input value (prints as 2/10/2012 3:19:57 PM) as an 'aware' date-time? How? And can anyone confirm that my findings are probably correct?

Thanks for any help.
 
J

John Gordon

In said:
I want to compare a user entered date-and-time against the date-and-time of
a pdf file. I posted on this (how to get a file's date-time) before, was
advised to do it like:
import datetime, os, stat
mtime = os.lstat(filename)[stat.ST_MTIME] // the files modification time
dt = datetime.datetime.fromtimestamp(mtime)
I am having problems with the comparison, that line is failing.

What line? You haven't posted any comparison line of code here.

Please post the actual code you're using, instead of telling us about it.
 
S

Steven D'Aprano

I want to compare a user entered date-and-time against the date-and-time
of a pdf file. I posted on this (how to get a file's date-time) before,
was advised to do it like:

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

What language are you writing? Using // for comments is not Python.

dt = datetime.datetime.fromtimestamp(mtime)

I am having problems with the comparison, that line is failing.

You haven't shown us the comparison line. Would you like us to guess what
it does?

My guess is that you are doing this:

if mtime is dtime: ...

Am I close?

If not, please forgive me, my crystal ball is often faulty.

I think
I may have figured out the issue -- I think it is a matter of the file's
time being 'aware' and the user-input date-time being 'naive'.

"Aware" of what?
 
N

noydb

I want to compare a user entered date-and-time against the date-and-time
of a pdf file. I posted on this (how to get a file's date-time) before,
was advised to do it like:

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



What language are you writing? Using // for comments is not Python.




dt = datetime.datetime.fromtimestamp(mtime)

I am having problems with the comparison, that line is failing.



You haven't shown us the comparison line. Would you like us to guess what

it does?



My guess is that you are doing this:



if mtime is dtime: ...



Am I close?



If not, please forgive me, my crystal ball is often faulty.




I may have figured out the issue -- I think it is a matter of the file's
time being 'aware' and the user-input date-time being 'naive'.



"Aware" of what?

Forgive me, I was just copying the code from the original reply to my orignal question.

Forgive me for not posting the comparison line, it goes something like
if one_time > another_time:

Forgive me - the 'aware' time vs 'naive' time refers to documentation I found for the datetime module, see second sentence down http://docs.python.org/2/library/datetime.html
 
D

Dave Angel

I want to compare a user entered date-and-time against the date-and-time
of a pdf file. I posted on this (how to get a file's date-time) before,
was advised to do it like:

import datetime, os, stat
mtime = os.lstat(filename)[stat.ST_MTIME] // the files modification
time
What language are you writing? Using // for comments is not Python.

dt = datetime.datetime.fromtimestamp(mtime)

I am having problems with the comparison, that line is failing.
You haven't shown us the comparison line. Would you like us to guess what
it does?

My guess is that you are doing this:

if mtime is dtime: ...

Am I close?

If not, please forgive me, my crystal ball is often faulty.

I think
I may have figured out the issue -- I think it is a matter of the file's
time being 'aware' and the user-input date-time being 'naive'.
"Aware" of what?
http://docs.python.org/2/library/datetime
""" An object of type *time* or *datetime* may be naive or *aware"

aware refers to time-zone and daylight savings time, such political
ephemerals. Two times can only be changed if one knows they're both in
the same one, or if one knows precisely what each is.
*
naive assumes the former, while aware trusts the latter.


To the OP: please specify your python version, your OS, and show your
source. Also show the complete error traceback. And while you're at it,
it might be useful to know the type of drive the file is on, since
Windows uses local times on FAT32 partitions, and gmt on NTFS partitions.

I suspect you're on Windows, so I can't help you with this nonsense. But I can at least help you ask a clear question.
 
N

noydb

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

""" An object of type *time* or *datetime* may be naive or *aware"



aware refers to time-zone and daylight savings time, such political

ephemerals. Two times can only be changed if one knows they're both in

the same one, or if one knows precisely what each is.

*

naive assumes the former, while aware trusts the latter.





To the OP: please specify your python version, your OS, and show your

source. Also show the complete error traceback. And while you're at it,

it might be useful to know the type of drive the file is on, since

Windows uses local times on FAT32 partitions, and gmt on NTFS partitions.



I suspect you're on Windows, so I can't help you with this nonsense. But I can at least help you ask a clear question.



--



DaveA

Fair enough, thanks
 
N

noydb

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

""" An object of type *time* or *datetime* may be naive or *aware"



aware refers to time-zone and daylight savings time, such political

ephemerals. Two times can only be changed if one knows they're both in

the same one, or if one knows precisely what each is.

*

naive assumes the former, while aware trusts the latter.





To the OP: please specify your python version, your OS, and show your

source. Also show the complete error traceback. And while you're at it,

it might be useful to know the type of drive the file is on, since

Windows uses local times on FAT32 partitions, and gmt on NTFS partitions.



I suspect you're on Windows, so I can't help you with this nonsense. But I can at least help you ask a clear question.



--



DaveA

Fair enough, thanks
 

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,755
Messages
2,569,537
Members
45,022
Latest member
MaybelleMa

Latest Threads

Top