We have seen how to use python to retrieve basic date and
datetime information. Lets take a look how to the format the output using a set
of predefined string control code. We can achieve this using python strftime function.
In this example we have already set import statement "datetime"
to import the python datetime class so you don’t have to do that because we have already
done in Python datetime article.
How to use python strftime function
#!/usr/bin/python3
from datetime import datetime
def main():
# Times and dates can be formatted using a set of predefined string
now = datetime.now() # get the current date and time
# Date Formatting Controll Codes
# %y/%Y - Year, %a/%A - weekday, %b/B% - month, %d - day of month
print(now.strftime("%Y"))
if __name__ == "__main__": main()
In above code I am retrieving the current date and time
using the "datetime" class function. Now that we have get the current
date and time, let's take a look some of the option that I have available to
format the datetime output. So to format date you can use control code. Here
%y/%Y upper and lower mean you can format the date abbreviated of full.
# %y/%Y - Year, %a/%A - weekday, %b/B% - month, %d - day of month
- %y - 18
- %Y - 2018
If you familiar with the other programming languages like C
and C++, they use the standard C library to control dates formatting. These control
code might familiar to you. So lets see how to actually use them.
Here I am using strftime. The strftime function on the value
that I got back for the current date and time takes a string which is a control
string ("%Y") and replaces whatever the control code is. Remember here
control code mean (# %y/%Y - Year, %a/%A - weekday, %b/B% - month, %d - day of
month). In this case the control code is %Y, the value of current year. So this
will print the full year with century (2018). You can see its print out 2018.
And if we use the control code with lower %y, than this will
print the abbreviated year only (18).
Now let's move to more advance.
#!/usr/bin/python3
from datetime import datetime
def main():
# Times and dates can be formatted using a set of predefined string
now = datetime.now() # get the current date and time
# Date Formatting Controll Codes
# %y/%Y - Year, %a/%A - weekday, %b/B% - month, %d - day of month
print("Full Date: ",now.strftime("%Y"))
print("Abbreviated Date: ",now.strftime("%y"))
print(now.strftime("%a, %d %B, %y")) # will print out Sat, 17 February, 18
if __name__ == "__main__": main()
In above code I am printing the abbreviated day name, followed
by day number, followed by the full month name and the abbreviated year. So
this is going to print out something like (Sat, 17 February, 18)
Here its print out "Sat" because the lower case
%a, so its abbreviated, if I change this to upper case %A than it will print
out full name "Saturday".
Locale specific information using python strftime
Python also give you a way of printing out the locale
specific information. So its benefit is that rather than having a figure out
your application is being run and how to print out information using the
current localized version of date and datetime. There is the control code that
it does for you.
#!/usr/bin/python3
from datetime import datetime
def main():
# Times and dates can be formatted using a set of predefined string
now = datetime.now() # get the current date and time
# Date Formatting Controll Codes
# %y/%Y - Year, %a/%A - weekday, %b/B% - month, %d - day of month
print("Full Date: ",now.strftime("%Y"))
print("Abbreviated Date: ",now.strftime("%y"))
print(now.strftime("%a, %d %B, %y")) # will print out Sat, 17 February, 18
# %c - locale's date and time, %x - locale's date, %X - locale's time
print(now.strftime("%c"))
print(now.strftime("%x"))
print(now.strftime("%X"))
if __name__ == "__main__": main()
So %c is the locale date and time, lower case %x is just a
date and upper case %X is just the time.
You can see that it's printing out date and time information, the date and time all appropriate for how I have my locale setup on my machine (Computer). If I was running a computer which is in Europe the information you have seen is probably different, because it depend upon the locale setting they are.
Time Formatting using python strftime
Let's take a look at time formatting now. Just the same way
you can print formatted date information you can print formatted time
information as well.
#!/usr/bin/python3
from datetime import datetime
def main():
# Times and dates can be formatted using a set of predefined string
now = datetime.now() # get the current date and time
# Date Formatting Controll Codes
# %y/%Y - Year, %a/%A - weekday, %b/B% - month, %d - day of month
print("Full Date: ",now.strftime("%Y"))
print("Abbreviated Date: ",now.strftime("%y"))
print(now.strftime("%a, %d %B, %y")) # will print out Sat, 17 February, 18
# %c - locale's date and time, %x - locale's date, %X - locale's time
print(now.strftime("%c"))
print(now.strftime("%x"))
print(now.strftime("%X"))
# Formatting Time
# %I%H - 12/24 Hour, %M - minute, %S - second, %p - locale's AM/PM
print(now.strftime("%I:%M:%S:%p")) # 12-Hour:Minute:Second:AM
print(now.strftime("%H:%M")) #24-Hour:Minute
if __name__ == "__main__": main()
So same kind of idea you got %I:%H for 12 vs 24 Hours, %M
for minutes, %S for seconds and %p for locale's AM vs PM. So if I want to print
out 12 hours base time with minute, second and AM/PM then I will use.
print(now.strftime("%I:%M:%S:%p")) # 12-Hour:Minute:Second:AM
If I want to use 24 hours time pattern than I will use.
print(now.strftime("%H:%M")) #24-Hour:Minute
As you can see python provide some rich and pretty controls
for printing out dates and time using complex formatting just using some
controls code.
1 Comments
thanks dude you save my day....
ReplyDelete