python time时间格式化参数说明

写爬虫/网站,经常要遇到把各种奇葩的时间,变成看得懂的时间的问题。
这时候就应该使用时间字符串的格式化了。
经常忘记格式化的字符串的含义怎么办,那就多来看看这篇文章
这是从官方文档上,翻译下来,顺便加了个示例和自己的注解的翻译文档


时间比如为现在:
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
%% 就是'%'的意思。

注:

  1. 当用strptime()函数的时候,只有使用%I指令来解析小时,%p指令才会影响到输出的小时。 (这一段我有点糊涂,不过经过代码验证就懂了。要让AM/PM生效,解析小时使用的格式化字符串必须是%I才行。比如PM 01:00,使用%p %H,得到的小时是凌晨1点;而使用%p %I,得到的才是13点。)
  2. 范围真的是061;值为60在表示闰秒的时间戳中有效,而值为61是由于历史原因而支持。
  3. 当与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

推荐阅读更多精彩内容