How to get the current date and time in Python
Here is an example of how to get the current date and time using the datetime
module in Python:
import datetime
now = datetime.datetime.now()
print
print "Current date and time using str method of datetime object:"
print str(now)
print
print "Current date and time using instance attributes:"
print "Current year: %d" % now.year
print "Current month: %d" % now.month
print "Current day: %d" % now.day
print "Current hour: %d" % now.hour
print "Current minute: %d" % now.minute
print "Current second: %d" % now.second
print "Current microsecond: %d" % now.microsecond
print
print "Current date and time using strftime:"
print now.strftime("%Y-%m-%d %H:%M")
Results:
Current date and time using str method of datetime object: 2008-06-26 11:33:15.309236 Current date and time using instance attributes: Current year: 2008 Current month: 6 Current day: 26 Current hour: 11 Current minute: 33 Current second: 15 Current microsecond: 309236 Current date and time using strftime: 2008-06-26 11:33
Directly from the
time module documentation, here are more options to use with
strftime:| Directive | Meaning | Notes |
|---|---|---|
%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]. | |
%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. | (1) |
%S |
Second as a decimal number [00,61]. | (2) |
%U |
Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0. | (3) |
%w |
Weekday as a decimal number [0(Sunday),6]. | |
%W |
Week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0. | (3) |
%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 |
Time zone name (no characters if no time zone exists). | |
%% |
A literal "%" character. |
See also:
-
datetimeObjects in thedatetimemodule of the Python Library Reference.
Related posts
- How to get the date N days ago in Python — posted 2010-10-16
- Converting time zones for datetime objects in Python — posted 2009-05-05
- Python datetime / time conversions — posted 2008-11-12
18
Comments
—
Comments feed for this post
#3 gary commented on 2009-10-22:
Came in very handy for a little FTP script I just wrote in Python. Thanks.
#4 python developer commented on 2009-10-22:
Thaaaaaaaaaaaaaaak you so much for the CLEAR, CLEAN and COMPLETE SOLUTION.
#7 maniek commented on 2010-07-05:
Short datetime display:
print str(now)[:10]
output: 2010-07-05
print str(now)[:16]
output: 2010-07-05 20:34
print str(now)[:19]
output: 2010-07-05 20:34:26
#8 Soule commented on 2010-07-18:
Absolutely terrific.
Did the trick for me, thanks A LOT. crucial for a project im working on;
Two questions:
How to display time in specific timezone, like in my case Pacific? and Also, how to print in 12 Hour format? I got around this by using an array, but is there any official way of doing that?
You're answer asap would be tremendously appreciated - Great Blog!
#9 Eliot commented on 2010-07-18:
Soule: Thanks, glad it was helpful... To print the time in 12-Hour format use the %I formatting string with strftime. To handle timezones, I use the pytz package. For more info, see my other blog post: Converting time zones for datetime objects in Python. Hope that helps.
#13 somesh commented on 2011-05-05:
I am working on the yml: date_current: !eval "'%s-%s-%s' %(datetime.now().year,datetime.now().month,datetime.now().day)" date_from: !eval "'%s-%s-%w' %(datetime.now().year,datetime.now().month,datetime.now().weekday)" date_to: !eval "'%s-05-31' %(datetime.now().year)" name: !eval "'Week-22(%s)' %(datetime.now().year)"
and wanted to use first day of the week and last of the week.
Is there someone who can help me?
#14 tony commented on 2011-06-07:
This seems ridiculously complicated. I mean, to get what I get from bash's
date +%I:%M
or with php
echo date(h:i)
or even tcl
[clock format [clock seconds] -format "%H:%M"]
I have to, first, import datetime, then call datetime.datetime.now().strftime("%I:%M")
Why isn't there a simpler, built-in time/date function?
I don't understand why anybody says python is so easy to learn. php, tcl and bash are all much simpler. I'm trying to learn it, but it seems like many things are needlessly complicated. Maybe I was spoiled by learning tcl first?
#15 PostaL commented on 2011-06-19:
The bottle in the logo should read NaCl (Salt) not S (Sulfur) :P
#16 Chanh Vo commented on 2011-07-15:
Thanks this is great help. Save me time from debugging code that I got from other person.
#18 Erick commented on 2012-01-09:
Thank you Eliot, very much for your most helpful page!
I must agree with Tony (#14).
I made my living as a programmer from 1982 to 2006, working with COBOL, dBASE, various BASIC's, and later SCO Unix, the Bourne shell, and filePro. Everything I worked with made it very easy to get a system date to put on a screen or report, and the documentation (whatever kind) made it easy to understand HOW to do so.
Since 2000 I wanted a general purpose programming language that was free and that I could master and use for many different purposes, and without having to install anything other than my own creation on a user's computer. My research kept pointing to Python.
Retired now, I finally have the opportunity to learn and explore it. I made some very simple read-a-file-write-a-report programs as we did in learning COBOL and BASIC. Something my simple linear brain can understand well. Everything went well until I tried to find how to get a system date to put on my report.
I wasted a frustrating, confusing hour trying to glean some usable information from Python's Help and from 4 different published Python books. Nothing helped until I resorted to Google and found this page.
While I like the idea of Python and everything I have read about it, I must say that in just trying to learn how to get the current system date I found about 1/3 of Python's internal documentation to be somewhat helpful (but not enough), 1/3 to be incomprehensible gibberish (and I'm used to studying manuals!), and 1/3 to be comprehensible but utterly useless.
Nothing would tell me how to do this simple thing. I sincerely hope this is not a portent of things to come.
Post a comment
About
I'm Eliot and this is my notepad for programming topics such as Python, Django, Ubuntu, Emacs, etc... more »
Search Blog
Tags
-
algorithms
(5)
-
aws
(9)
-
blogproject
(20)
-
c_cplusplus
(12)
-
cardstore
(8)
-
colinux
(2)
-
concurrency
(13)
-
conkeror
(2)
-
core
(2)
-
cygwin
(17)
-
datastructures
(14)
-
datetime
(4)
-
decorators
(4)
-
django
(40)
-
emacs
(22)
-
files_directories
(11)
-
git
(5)
-
hardware
(5)
-
install_setup
(8)
-
javascript
(3)
-
keyboard
(9)
-
matplotlib
(5)
-
mercurial
(4)
-
nginx
(2)
-
persistence
(5)
-
preferences
(7)
-
processes
(4)
-
pyqt
(18)
-
python
(144)
-
ratpoison
(3)
-
regexes
(6)
-
rsync
(3)
-
softwaretools
(17)
-
sql
(14)
-
ssh
(10)
-
subversion
(6)
-
twisted
(7)
-
ubuntu
(65)
-
urxvt
(5)
-
vxworks
(25)
-
webdev
(5)
-
wmii
(7)
Blogroll
- Adam Gomaa
- Alex Clemesha
- Amir Salihefendic
- Armin Ronacher
- David Beazley
- David Ziegler
- Duncan McGreggor
- Gareth Rushgrave
- Glyph Lefkowitz
- Guido van Rossum
- Ian Bicking
- Jacob Kaplan-Moss
- James Bennett
- James Tauber
- Jesper Noehr
- Marty Alchin
- Matt Harrison
- Nikolay Kolev
- Parand Darugar
- Peter Baumgartner
- Peter Bengtsson
- Rob Hudson
- Simon Willison
- Will McGugan
#1 Kasper commented on 2009-04-17:
Cool. Very useful, thanks :)