WHCSRL 技术网

Python知识笔记(+2):理解datetime模块中strftime()和strptime()、binascii模块中进制之间互相转换

下面将介绍一些常用函数的用法。

1. python中strftime()和strptime()函数的描述与用法

  • strftime()函数用来表示时间元组,返回可读字符串表示的当前时间,由()里面的参数决定格式。

  • strptime()函数是按照特定时间格式将字符串转换成时间类型。它们重点是格式之间的转换。

  • datetime.now():获取电脑当前时间,且随着电脑配置时间而改变,不带时区。(例如中国北京时间)

  • datetime.utcnow():获取世界标准时区的当前时间,与电脑配置无关,带时区。(例如格林威治时间)

1.1 基本格式

datetime.strftime('%%Y')	#strftime()函数日期格式转字符串格式

datetime.strptime(str,'%%Y')	#strptime()函数字符串格式转日期格式
  • 1
  • 2
  • 3

其中str表示字符串格式,%%Y表示参数是一个时间格式。

%%y	#两位数年份(00-99)
%%Y	#四位数年份(0000-9999)
%%m	#月份(01-12)
%%d	#月内的某一天(0-31)
%%H	#24小时制(0-23)
%%I	#12小时制(01-12)
%%M	#分钟(00-59)
%%S	#秒钟(00-59)
%%X	#本地时间表示(时:分:秒)(xx:xx:xx)
%%x	#本地日期表示(月/天/时,xx/xx/xx)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

1.2 例子

from datetime import datetime	#调用datetime模块,以便使用strftime函数

now = datetime.now()	#定义当前时间

year = now.strftime("%%Y")	#调用strftime函数获取当前年份

month = now.strftime("%%m")	#调用strftime函数获取当前年份

day = now.strftime("%%d")	#调用strftime函数获取当前年份

print(year,"年",month,"月",day,"日")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

输出

20211031
  • 1

strftime()strptime()函数的区别例子。

from datetime import datetime	#调用datetime模块,以便使用strftime和strptime函数

datetime.now().strftime('%%Y-%%m-%%d  %%H:%%M:%%S')	#获取当前时间,并按照年月日,时分秒格式输出
  • 1
  • 2
  • 3

输出'2021-11-01 09:46:33'

from datetime import datetime	#调用datetime模块,以便使用strftime和strptime函数

datetime.strptime('2021-11-01  09:30:30','%%Y-%%m-%%d  %%H:%%M:%%S')	#将上述的时间格式转换为字符串格式
  • 1
  • 2
  • 3

输出'datetime.datetime(2021, 11, 1, 9, 30, 30)'

2. binascii模块中进制之间的相互转换

binascii模块中包含了许多二进制ASCII编码的二进制表示的转换,以下先介绍一些python的内置函数。

2.1 基本格式

hex()	#把十进制整形转换成16进制
bin()	#把十进制整形转换成二进制
oct()	#把十进制整形转换成八进制
chr()	#把整形转换成ASCII码表中对应的字符
ord()	#把ASCII码表中的字符转换成对应的整形
  • 1
  • 2
  • 3
  • 4
  • 5

2.2 例子

hex(100)
  • 1

输出'0x64'

bin(100)
  • 1

输出'0b1100100'

oct(100)
  • 1

输出'0c144'

chr(100)
  • 1

输出'd'

ord('d')
  • 1

输出100

此外,区别函数b2a_hex()hexlifya2b_hex()unhexlify函数。其中可以把b2a_hex()中的b看作是bin(二进制)意思,a看作是ascii码意思,以便于理解b2a_hexa2b_hex了。

import binascii	#需要导入模块binascii

a = b'hello'	#注意这里需要在字符串前面加b,否则会出错

b = binascii.b2a_hex(a)

c = binascii.hexlify(a)

d = binascii.unhexlify(b)

e = binascii.a2b_hex(b)

print(b)

print(c)

print(d)

print(e)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

输出

b'68656c6c6f
b'68656c6c6f
b'hello'
b'hello'
  • 1
  • 2
  • 3
  • 4

可以看出函数b2a_hex()hexlify是一个函数,都是返回二进制数据的十六进制表示。同理,a2b_hex()unhexlify和也是同一个函数,与前面两个函数的功能正好相反。

值得注意的是hex()binascii.hexlify()功能类似,但是有区别,hex()只能接受整形的转换,而不能接受字符串。

推荐阅读