Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Preview
Start a free Courses trial
to watch this video
Let's see about turning your `datetime` objects into specific strings, or creating `datetime` objects from strings.
New Terms
-
strftime - Method to create a string from a
datetime
-
strptime - Method to create a
datetime
from a string according to a format string
Links
strftime/strptime
guide-
strftime
reference sheet
So what if you want your date and time in
a certain format,
0:00
like you need to print that out all pretty
for a script or on your blog.
0:04
Welcome to the warm, wonderful world of
date formatting.
0:07
I've put a link in the teacher's notes.
0:10
You should probably have this open for the
video and the later code challenges.
0:12
Trust me, no one memorizes this.
0:16
But complicated or not, it's one of the
most useful areas in the datetime library.
0:18
So as you can see, I jumped ahead a little
bit.
0:23
I've already got datetime imported and
I've already created our now variable.
0:25
Just like we did in the last video.
0:28
So lets look at our object once again.
0:30
We get this datetime.datetime which tells
us the class and everything and
0:34
then we get this spelled out big long
thing of year,
0:38
month, day, hour, minute, second,
microsecond.
0:41
It's definitely readable, but do we wanna
look at that every single time?
0:44
Do we have to look at that every single
time?
0:47
Do we have to pull apart the month and
0:50
the year attributes in order to get out
our, you know, nice, pretty strings?
0:52
No, of course we don't.
0:56
Python's not gonna make us do all that
extra work.
0:58
So let's look at this function called
strftime.
1:00
strftime let's us turn a date, a time, or
1:04
a datetime into a string formatted how we
want.
1:07
So let's use strftime and let's get out
just the month name and the day number.
1:11
So we do now.strftime, and then we have to
pass in a string.
1:17
So %B is the month name.
1:21
I'm gonna do a space and I'm gonna %d.
1:25
And print that and we get October 15th.
1:28
So that's handy enough but there's a
problem.
1:31
And the problem is that I don't know all
of these strings.
1:34
So let's come down here and let's actually
go to
1:40
docs.python.org as we do, and let's search
over here for datetime.
1:44
And here's our datetime module, and if we
look down here,
1:50
we have this strftime and strptime
behavior.
1:54
And there's this awesome, awesome table
here showing me everything.
1:59
So you can see I did %B, and I got the
full name in my current local.
2:01
So if I was in Germany, I'd get a
different name.
2:06
If I was in Spain, I'd get a different
name, so on and so forth.
2:09
Since I'm in the US, I get January,
February, whatever.
2:12
Okay, so what I want is I want what we
consider like a US
2:15
standard time stamp, which is one where
it's month, day, year.
2:20
Okay.
2:26
So now.strftime, and I have to pass in a
string.
2:26
So let's find month.
2:30
Here it is.
2:33
Month as zero-padded decimal number.
2:34
So that's %m, okay, %m.
2:35
And I'm gonna do a slash and I'm gonna do
%d is the day.
2:39
Cuz I did that before and then now I want
the year.
2:42
And I want, well, so let's see.
2:45
We have here year without century so we
get like 01 or
2:48
14 which is what we're gonna get.
2:53
Or year with century and we'd get a longer
number like 2013, 2014.
2:55
Let's do the shorter number.
3:00
And we're going to do %y.
3:01
[NOISE] We press Return and we get
10/15/14.
3:04
All right, so that's it.
3:09
The hardest part of this is really
referring back to those datetime docs.
3:11
Finding exactly which one you want in this
table is not always the easiest thing.
3:15
Sometimes it takes a little bit of reading
to figure out which one that you're doing.
3:21
So bookmark this, keep it handy, you're
gonna be using this a lot.
3:26
It's definitely a very, very useful thing
to have around.
3:29
I mentioned that we're also gonna talk
about an strptime function.
3:33
Now sadly, strftime and strptime are
nearly identical.
3:38
There's one letter difference, F or P.
3:43
So, you're probably gonna end up confusing
them.
3:45
I know I do.
3:47
But I've started thinking of them in this
way, strftime is string from time,
3:49
or string formatted time.
3:54
And strptime is string parsed into time.
3:56
So, hopefully that pneumonic, depending on
how good it is, will help you.
4:00
So what does strptime do?
4:05
I keep saying it, we keep talking about
it, but
4:07
we haven't talked about what it does yet.
4:09
So it let's us make a datetime from a
string with a certain format.
4:11
Okay, so, let's do this.
4:15
Let's say birthday, datetime.strptime and
4:17
then we pass in a string that represents
the date.
4:23
So let's do 2015-04-21.
4:26
Which would be the 21st of April next
year.
4:30
This isn't my birthday, just a random
date.
4:34
All right, so, but now what I have to do
is I have to explain
4:37
to datetime how this string is formatted.
4:42
And I do that with the same string types
that we used in strftime.
4:45
So, I remember that %Y is the year.
4:50
Let's look that up just to make sure, and
there it is.
4:54
That's the long year.
4:58
Okay.
4:59
And then we do hyphen and we do %m,
hyphen, %d, all right.
5:00
So the only thing different here is kind
of the order they're in, and
5:04
we used a cap Y instead of a lower case Y.
5:08
Oh, sorry, it is datetime.datetime.
5:09
[BLANK_AUDIO]
5:12
And I missed my dot.
5:17
There we go, okay.
5:21
So now, we should be able to look at
birthday and
5:23
there's our datetime that was created.
5:26
Now, you notice there's no there's no
hours on this because we didn't have any
5:28
hours specified in our strptime.
5:33
But that only had the date.
5:35
What if we wanted to include a time as
well?
5:36
So let's do birthday_party.
5:39
Because this is when the party is.
5:41
So datetime.datetime.strptime.
5:44
And we'll do 2015 again, and 04 again, and
21.
5:47
And then we'll do a space, and then we'll
do 09, colon, 00.
5:52
Okay, so this is a lot more to explain.
5:57
We're having the birthday party, you know
what?
6:00
Let's have the birthday party at noon
instead.
6:01
All right, how do we describe this one?
6:05
Well, the beginning is still the same.
6:06
So it's that.
And then we put in a literal space.
6:09
And then I need hours.
6:13
And, let's see.
6:17
Hours are capital H, all right.
6:18
Capital H, colon, and I know that capital
M is minutes.
6:23
You start to memorize some of these as you
go through.
6:28
And now let's look at birthday_party.
6:31
And there's our time and it's set at noon.
6:34
All right, so we have everything we put in
there.
6:36
Now, I want you to notice, I did the
capital H so it's a 24-hour clock.
6:39
So like 1 PM would be 13, 6 PM would be
18.
6:43
I do that so I don't have to specify AM or
PM.
6:47
There is a flag you can put in for AM and
PM if you wanna use those,
6:50
if that's more comfortable to you.
6:53
So you have full control of this.
6:55
Turning datetime objects into strings, or
strings into datetimes,
6:58
is mostly a matter of remembering or
looking up the format strings.
7:01
I'm sure you can see it's also pretty
handy.
7:05
Actually, I have a challenge for you now.
7:08
Using the Python docs, and strftime and
7:10
strptime, make a script that accepts a
month and
7:13
day date in whatever format you want that
returns a link to Wikipedia for that date.
7:16
Be sure you tell the user how to format
their data for you.
7:21
Come back in the next video and we'll
build it together.
7:24
You need to sign up for Treehouse in order to download course files.
Sign up