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.





datetime" to import the python datetime class so you don’t have to do that because we have already done in In this example we have already set import statement "" to import theclass 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

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. If you familiar with the other programming languages like C and, 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.

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. Here I am using. Theon 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 (). 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.