前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python时间日期格式化和反格式化

python时间日期格式化和反格式化

作者头像
sunsky
发布2020-08-19 16:06:18
2.2K0
发布2020-08-19 16:06:18
举报
文章被收录于专栏:sunskysunsky

strftime()strptime()行为

datedatetimetime对象都支持一种 strftime(format)方法,以创建一个表示显式格式字符串控制下的时间的字符串。从广义上讲, 尽管不是所有对象都支持一种方法,但它的d.strftime(fmt) 行为类似于time模块。time.strftime(fmt, d.timetuple())timetuple()

相反,datetime.strptime()类方法datetime从表示日期和时间的字符串以及相应的格式字符串创建 对象。除非格式包括支持但被丢弃的子秒组件或时区偏移信息,否则等效于。datetime.strptime(date_string,format)datetime(*(time.strptime(date_string, format)[0:6]))datetime.strptimetime.strptime

对于time对象,不应使用年,月和日的格式代码,因为时间对象没有这样的值。如果它们仍在使用,1900 则替换年份,以及1月份和日期。

对于date对象,不应使用小时,分钟,秒和微秒的格式代码,因为date对象没有这样的值。如果它们仍在使用,0则替代它们。

支持的全套格式代码因平台而异,因为Python调用平台C库的strftime()功能,平台变体很常见。要查看平台支持的完整格式代码集,请参阅strftime(3)文档。

出于同样的原因,处理包含无法在当前语言环境的字符集中表示的Unicode代码点的格式字符串也与平台相关。在某些平台上,此类代码点在输出中保持不变,而在其他平台上则strftime可能会引发UnicodeError或返回空字符串。

以下是C标准(1989版)所需的所有格式代码的列表,这些代码适用于具有标准C实现的所有平台。请注意,1999版C标准添加了其他格式代码。

工作年限的确切范围strftime()也因平台而异。无论平台如何,1900年前都无法使用。

指示

含义

笔记

%a

工作日作为语言环境的缩写名称。

太阳,周一,......,周六(en_US); 所以,Mo,...,Sa(de_DE)

(1)

%A

平日作为语言环境的全名。

星期日,星期一,......,星期六(en_US); Sonntag,Montag,......,Samstag(de_DE)

(1)

%w

工作日为十进制数,其中0表示星期日,6表示星期六。

0,1,...,6

%d

作为零填充十进制数的月中的某一天。

01,02,...,31

%b

月份为区域设置的缩写名称。

Jan,Feb,...,Dec(en_US); Jan,Feb,...,Dez(de_DE)

(1)

%B

月份为区域设置的全名。

1月,2月,...,12月(en_US); Januar,Februar,...,Dezember(de_DE)

(1)

%m

月份为零填充十进制数。

01,02,...,12

%y

没有世纪的年份为零填充十进制数。

00,01,...,99

%Y

年份以世纪为十进制数。

1970年,1988年,2001年,2013年

%H

小时(24小时制)作为零填充十进制数。

00,01,...,23

%I

小时(12小时制)作为零填充十进制数。

01,02,...,12

%p

Locale相当于AM或PM。

AM,PM(en_US); 上午,下午(de_DE)

(1),(2)

%M

分钟为零填充十进制数。

00,01,...,59

%S

其次是零填充十进制数。

00,01,...,59

(3)

%f

Microsecond为十进制数,左侧为零填充。

000000,000001,...,999999

(4)

%z

UTC偏移量,格式为+ HHMM或-HHMM(如果对象是天真的,则为空字符串)。

(空),+ 0000,-0400,+ 1030

(5)

%Z

时区名称(如果对象是天真的,则为空字符串)。

(空),UTC,EST,CST

%j

一年中的一天作为零填充十进制数。

001,002,...,366

%U

作为零填充十进制数的一年中的周数(星期日作为一周的第一天)。在第一个星期日之前的新年中的所有日子都被认为是在第0周。

00,01,...,53

(6)

%W

一年中的周数(星期一作为一周的第一天)作为十进制数。在第一个星期一之前的新年中的所有日子被认为是在第0周。

00,01,...,53

(6)

%c

Locale的适当日期和时间表示。

1988年8月16日星期二21:30:00(en_US); Di 16 Aug 21:30:00 1988(de_DE)

(1)

%x

Locale的适当日期表示。

08/16/88(无); 1988年8月16日(en_US); 19.08.1988(de_DE)

(1)

%X

Locale的适当时间表示。

21:30:00(zh_); 21:30:00(de_DE)

(1)

%%

文字'%'字符。

笔记:

  1. 由于格式取决于当前区域设置,因此在对输出值进行假设时应小心。字段顺序会有所不同(例如,“月/日/年”与“日/月/年”),输出可能包含使用区域设置的默认编码编码的Unicode字符(例如,如果当前区域设置为ja_JP,则为默认值编码可以是中的任一项eucJPSJISutf-8;使用locale.getlocale() 以确定当前区域的编码)。
  2. strptime()方法一起使用时,%p如果%I指令用于解析小时,则该指令仅影响输出小时字段。
  3. time模块不同,该datetime模块不支持闰秒。
  4. %f是C标准中格式字符集的扩展(但在datetime对象中单独实现,因此始终可用)。当与该strptime()方法一起使用时,该%f 指令接受一到六位数字和右边的零焊盘。 2.6版中的新功能。
  5. 对于幼稚目的,%z%Z格式代码由空字符串替换。 对于一个知道的对象: %z utcoffset()转换为形式为+ HHMM或-HHMM的5个字符的字符串,其中HH是2位数字符串,给出UTC偏移小时数,MM是2位数字符串,给出UTC偏移分钟数。例如,如果utcoffset()返回 ,则替换为字符串 。timedelta(hours=-3, minutes=-30)%z'-0330' %Z 如果tzname()返回None%Z则替换为空字符串。否则%Z由返回值替换,返回值必须是字符串。
  6. 当与使用strptime()方法,%U%W指定了一周,一年中的一天,在计算仅使用。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-02-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • strftime()和strptime()行为
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档