Time

H

HMS Surprise

I need to convert the string below into epoch seconds so that I can
perform substractions and additions. I assume I will need to break it
up into a time_t struct and use mktime. Two questions if you will
please:

Is there a way to use multiple separator characters for split similar
to awk's [|] style?

Could you point to an example of a python time_t struct?

05/11/2007 15:30

Thanks,

jvh
 
H

HMS Surprise

Sorry, reading a little closer I see that the time tuple is apparently
an ordinary list.

jvh
 
J

John Machin

[first message]

HS ==> I need to convert the string below into epoch seconds so that I
can
perform substractions and additions.

JM ==> I presume you mean "seconds since the epoch". You don't need to
do that.

HS ==> I assume I will need to break it
up into a time_t struct and use mktime.

JM ==> You assume wrongly. The time module exists (IMVHO) solely as a
crutch for people who are converting C etc code that uses the time.h
functions from the C standard library. If you are starting off from
scratch, use the Python datetime module -- especially if you need to
store and manipulate pre-1970 dates; e.g. the date of birth of anyone
aged more than about 37.5 years :)

HS ==> Two questions if you will
please:

Is there a way to use multiple separator characters for split similar
to awk's [|] style?

JM ==> Only if you can find such a way in the manual.

HS ==> Could you point to an example of a python time_t struct?

JM ==> Python doesn't have that; it's a C concept


HS ==> 05/11/2007 15:30

[second message]

HS==> > Could you point to an example of a python time_t struct?

Or maybe that should be a tm struct???

JM ==> See previous answer.

[third message]

HS ==> Sorry, reading a little closer I see that the time tuple is
apparently
an ordinary list.

JM ==> Huh? A tuple is a tuple. A tuple is not a list, not even a very
extraordinary one.

If you are desperate to use the time module, try this:
# Given the current date, I'm presuming that your example indicates
that you adhere to the "month-first-contrary-to-common-sense"
religion :)(2007, 5, 11, 15, 30, 0, 4, 131, -1)

otherwise:
10.645833333333334

Do read the datetime module documentation for more info ... in
particular the timedelta object has a microseconds attribute; in
general there is a whole heap of functionality in there.

HTH,
John
 
H

HMS Surprise

Thanks for posting. I sure am sorry that I wasted your time. I should
have started the post stating I am using jython 2.2.3 and apparently
it has no datetime module. But I will keep datetime in mind for future
reference.

Since I had no datetime I cobbled out the following. Seems to work
thus far. Posted here for the general amusement of the list.

Regards,

jvh

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

from time import *
s = '05/11/2007 1:23 PM'
t = s.split()
mdy = t[0].split('/')

hrMn = t[1].split(':')
if t[2] == 'PM':
hrMn[0] = int(hrMn[0]) + 12

tuple =(int(mdy[2]), int(mdy[0]), int(mdy[1]), hrMn[0], int(hrMn[1]),
0,0,0,0)
print tuple

eTime = mktime(tuple)
print 'eTime', eTime
 
K

kyosohma

Thanks for posting. I sure am sorry that I wasted your time. I should
have started the post stating I am using jython 2.2.3 and apparently
it has no datetime module. But I will keep datetime in mind for future
reference.

Since I had no datetime I cobbled out the following. Seems to work
thus far. Posted here for the general amusement of the list.

Regards,

jvh

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

from time import *
s = '05/11/2007 1:23 PM'
t = s.split()
mdy = t[0].split('/')

hrMn = t[1].split(':')
if t[2] == 'PM':
hrMn[0] = int(hrMn[0]) + 12

tuple =(int(mdy[2]), int(mdy[0]), int(mdy[1]), hrMn[0], int(hrMn[1]),
0,0,0,0)
print tuple

eTime = mktime(tuple)
print 'eTime', eTime

Since jython works with Java, why not use Java's time/datetime
modules? Various links abound. Here are a few:

http://www.raditha.com/blog/archives/000552.html
http://www.xmission.com/~goodhill/dates/deltaDates.html
http://www.velocityreviews.com/forums/t149657-find-difference-in-datetime-variables.html

Maybe those will give you some hints.

Mike
 
H

HMS Surprise

Thanks for posting. I sure am sorry that I wasted your time. I should
have started the post stating I am using jython 2.2.3 and apparently
it has no datetime module. But I will keep datetime in mind for future
reference.
Since I had no datetime I cobbled out the following. Seems to work
thus far. Posted here for the general amusement of the list.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

from time import *
s = '05/11/2007 1:23 PM'
t = s.split()
mdy = t[0].split('/')
hrMn = t[1].split(':')
if t[2] == 'PM':
hrMn[0] = int(hrMn[0]) + 12
tuple =(int(mdy[2]), int(mdy[0]), int(mdy[1]), hrMn[0], int(hrMn[1]),
0,0,0,0)
print tuple
eTime = mktime(tuple)
print 'eTime', eTime

Since jython works with Java, why not use Java's time/datetime
modules? Various links abound. Here are a few:

http://www.raditha.com/blog/archive...ws.com/forums/t149657-find-difference-in-date...

Maybe those will give you some hints.

Mike

Excellent idea.

Thanks Mike.


jvh
 
H

HMS Surprise

if t[2] == 'PM':
hrMn[0] = int(hrMn[0]) + 12

Oops, should be:
hrMn[0] = int(hrMn[0]
if t[2] == 'PM':
hrMn[0] += 12

Oops +=1, should be:
hrMn[0] = int(hrMn[0]
if t[2] == 'PM':
hrMn[0] += 12

Need more starter fluid, coffee please!!!
 
G

Gabriel Genellina

Oops +=1, should be:
hrMn[0] = int(hrMn[0]
if t[2] == 'PM':
hrMn[0] += 12

Need more starter fluid, coffee please!!!

Still won't work for 12 AM nor 12 PM...
 
G

Grant Edwards

Oops +=1, should be:
hrMn[0] = int(hrMn[0]
if t[2] == 'PM':
hrMn[0] += 12

Need more starter fluid, coffee please!!!

Still won't work for 12 AM nor 12 PM...

Do you mean 12 Noon or 12 Midnight? 12AM and 12PM don't exist,
do they?
 
G

Gabriel Genellina

Oops +=1, should be:
hrMn[0] = int(hrMn[0]
if t[2] == 'PM':
hrMn[0] += 12

Need more starter fluid, coffee please!!!

Still won't work for 12 AM nor 12 PM...

Do you mean 12 Noon or 12 Midnight? 12AM and 12PM don't exist,
do they?

http://www.astronomy.net/articles/13/

No. Even ignoring that exact instant at Noon or Midnight, 12:01 PM
translates into itself, 12:01, on a 24 hr clock; and 12:01 AM becomes 0:01
on a 24 hr clock. For hours between 01 PM and 11 PM, yes, you can follow
the rule "add 12".
 

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

No members online now.

Forum statistics

Threads
474,432
Messages
2,571,680
Members
48,796
Latest member
Greg L.

Latest Threads

Top