写爬虫/网站,经常要遇到把各种奇葩的时间,变成看得懂的时间的问题。
这时候就应该使用时间字符串的格式化了。
经常忘记格式化的字符串的含义怎么办,那就多来看看这篇文章
这是从官方文档上,翻译下来,顺便加了个示例和自己的注解的翻译文档
时间比如为现在:
2018-12-29 01:41:19 ,时区为北京时间 东八区,周六
指令 | 含义 | 示例 | 注记 |
---|---|---|---|
%a |
当地工作日简写名称。 | Sat | |
%A |
当地工作日名称全称。 | Saturday | |
%b |
当地的缩写月份名称。 | Dec | |
%B |
当地的月份名称全称。 | December | |
%c |
当地适当的日期和时间的表示形式。 | Sat Dec 29 01:41:19 2018 | |
%d |
月份中的一天的十进制[01,31]。 | 29 | |
%H |
小时(24小时制)的十进制数[00, 23]. | 01 | |
%I |
小时(12小时制)的十进制数[01,12]. | 01 | |
%j |
当天为年中的第多少天的十进制数[001,366]。 | 363 | |
%m |
月份的十进制数[01,12]。 | 12 | |
%M |
分钟的十进制数[00, 59]。 | 41 | |
%p |
相对于当地时间的AM或PM。 | AM | (1) |
%S |
秒的十进制数[00, 61]。 | 19 | (2) |
%U |
年的周数(星期日为一周的第一天)为十进制数[00, 53]。在第一个星期天之前的新年里,所有的日子都被认为是在第0周。 | 51 | (3) |
%w |
工作日的十进制数[0(星期日),6]。 | 6 | |
%W |
年的周数(星期一为一周的第一天)的十进制数[00, 53]。在第一个星期一之前的新年里,所有的日子都被认为是在第0周。 | 52 | (3) |
%x |
当地适当的日期表示形式。 | 12/29/18 | |
%X |
当地适当的时间表示形式。 | 01:41:19 | |
%y |
无世纪的年份的十进制数[00, 99]。 | 18 | |
%Y |
加上了的世纪的十进制的年份。 | 2018 | |
%z |
时区偏移,表示与UTC/GMT格式+HHMM或-HHMM的正负时差,其中H表示十进制小时数字,M表示十进制分钟数字[-23:59,+23:59]。 | +0800 | |
%Z |
时区名称(如果没有时区,则没有字符)。 | CST | |
%% |
就是'%' 的意思。 |
注:
- 当用
strptime()
函数的时候,只有使用%I
指令来解析小时,%p
指令才会影响到输出的小时。 (这一段我有点糊涂,不过经过代码验证就懂了。要让AM/PM生效,解析小时使用的格式化字符串必须是%I
才行。比如PM 01:00
,使用%p %H
,得到的小时是凌晨1点;而使用%p %I
,得到的才是13点。) - 范围真的是
0
到61
;值为60
在表示闰秒的时间戳中有效,而值为61
是由于历史原因而支持。 - 当与
strptime()
函数一起用时,%U
和%W
仅在指定了该时间是一年中的第几周的星期几时时才会得出结果。
示例:
import time
now = time.localtime(time.time())
print(now)
print(time.strftime("%a, %A, %b, %B, %c, %d, %H,\
%I, %j, %m, %M, %p, %S, %U, %w, %W, %x, %X, %y, %Y, %z, %Z", now))
# 输出
"""
time.struct_time(tm_year=2018, tm_mon=12, tm_mday=29, tm_hour=1,
tm_min=41, tm_sec=19, tm_wday=5, tm_yday=363, tm_isdst=0)
Sat, Saturday, Dec, December, Sat Dec 29 01:41:19 2018, 29, 01,
01, 363, 12, 41, AM, 19, 51, 6, 52, 12/29/18, 01:41:19, 18, 2018, +0800, CST
"""
更多内容请查阅原文档:
https://docs.python.org/3/library/time.html