How to get formatted date time in Python the same way as in PHP
date('M d Y', $timestamp);
?
Asked
Active
Viewed 5,447 times
3

sultan
- 5,978
- 14
- 59
- 103
-
1Possible duplicate: http://stackoverflow.com/questions/311627/how-to-print-date-in-a-regular-format-in-python – Mike Sep 13 '10 at 11:54
-
Not really a duplicate, though it would be more useful if the question asked about translating PHP-style date format strings to Python. – joemaller Dec 04 '12 at 15:20
4 Answers
7
>>> import time
>>> timestamp = 1284375159
>>> time.strftime("%m %d %Y",time.localtime(timestamp))
'09 13 2010'

John La Rooy
- 295,403
- 53
- 369
- 502
4
You can use a suitable strftime
function. Here is an example using datetime
objects.
>>> from datetime import datetime
>>> today = datetime.today()
>>> today.strftime("%m %d %Y")
'09 13 2010'

Manoj Govindan
- 72,339
- 21
- 134
- 141
-
Great, thanks! And how to get the same result from time formatted like 1284375159? – sultan Sep 13 '10 at 12:05
2
The date, datetime, and time objects all support a strftime(format) method, to create a string representing the time under the control of an explicit format string.
Here is a list of the format codes with their directive and meaning.
%a Locale’s abbreviated weekday name.
%A Locale’s full weekday name.
%b Locale’s abbreviated month name.
%B Locale’s full month name.
%c Locale’s appropriate date and time representation.
%d Day of the month as a decimal number [01,31].
%f Microsecond as a decimal number [0,999999], zero-padded on the left
%H Hour (24-hour clock) as a decimal number [00,23].
%I Hour (12-hour clock) as a decimal number [01,12].
%j Day of the year as a decimal number [001,366].
%m Month as a decimal number [01,12].
%M Minute as a decimal number [00,59].
%p Locale’s equivalent of either AM or PM.
%S Second as a decimal number [00,61].
%U Week number of the year (Sunday as the first day of the week)
%w Weekday as a decimal number [0(Sunday),6].
%W Week number of the year (Monday as the first day of the week)
%x Locale’s appropriate date representation.
%X Locale’s appropriate time representation.
%y Year without century as a decimal number [00,99].
%Y Year with century as a decimal number.
%z UTC offset in the form +HHMM or -HHMM.
%Z Time zone name (empty string if the object is naive).
%% A literal '%' character.
This is what we can do with the datetime and time modules in Python
import time
import datetime
print "Time in seconds since the epoch: %s" %time.time()
print "Current date and time: " , datetime.datetime.now()
print "Or like this: " ,datetime.datetime.now().strftime("%y-%m-%d-%H-%M")
print "Current year: ", datetime.date.today().strftime("%Y")
print "Month of year: ", datetime.date.today().strftime("%B")
print "Week number of the year: ", datetime.date.today().strftime("%W")
print "Weekday of the week: ", datetime.date.today().strftime("%w")
print "Day of year: ", datetime.date.today().strftime("%j")
print "Day of the month : ", datetime.date.today().strftime("%d")
print "Day of week: ", datetime.date.today().strftime("%A")
That will print out something like this:
Time in seconds since the epoch: 1349271346.46
Current date and time: 2012-10-03 15:35:46.461491
Or like this: 12-10-03-15-35
Current year: 2012
Month of year: October
Week number of the year: 40
Weekday of the week: 3
Day of year: 277
Day of the month : 03
Day of week: Wednesday

Transformer
- 3,642
- 1
- 22
- 33
0
Way back in 2003, Simon Willison wrote DateFormat, a little date format translation class which enables php-style date format strings in Python:
>>> from datetime import datetime
>>> from DateFormat import DateFormat
>>> timestamp = 1354633606
>>> df = DateFormat(datetime.fromtimestamp(timestamp))
>>> df.format('M d Y')
'Dec 04 2012'
DateFormat is available here: http://simonwillison.net/2003/oct/7/dateinpython/

joemaller
- 19,579
- 7
- 67
- 84