6

I am trying to convert a datestamp of now into Unix TimeStamp, however the code below seems to be hit but then just jumps to the end of my app, as in seems to not like the time.mktime part.

from datetime import datetime
import time

now = datetime.now()
toDayDate = now.replace(hour=0, minute=0, second=0, microsecond=0)
newDate = time.mktime(datetime.strptime(toDayDate, "%Y-%m-%d %H:%M:%S").timetuple())
print(newDate)
3
  • add a *: time.mktime(*date... Commented Feb 27, 2017 at 16:45
  • 2
    strptime parses a date string based on the format spec -- toDayDate is not a date string, it's a date so you shouldn't need to be parsing anything there ... Commented Feb 27, 2017 at 16:47
  • Possible duplicate of Convert Python date to Unix timestamp Commented Dec 6, 2017 at 10:26

2 Answers 2

13

You could use datetime.timestamp() in Python 3 to get the POSIX timestamp instead of using now().

The value returned is of type float. timestamp() relies on datetime which in turn relies on mktime(). However, datetime.timestamp() supports more platforms and has a wider range of values.

Sign up to request clarification or add additional context in comments.

Comments

12

Change

newDate = time.mktime(datetime.strptime(toDayDate, "%Y-%m-%d %H:%M:%S").timetuple())

to

newDate = time.mktime(datetime.timetuple())

as an example I did:

from datetime import datetime
from time import mktime
t = datetime.now()
unix_secs = mktime(t.timetuple())

and got unix_secs = 1488214742.0

Credit to @tarashypka- use t.utctimetuple() if you want the result in UTC (e.g. if your datetime object is aware of timezones)

1 Comment

for timezone aware datetime objects use utctimetuple() instead of timetuple()

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.