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

本文介绍了Python中时间格式转换的strftime()和strptime()函数的使用方法,并通过实例展示了如何进行日期和时间的格式化操作。同时,还介绍了binascii模块中用于不同进制间转换的函数。

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

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

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

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

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

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

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

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

其中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 例子
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,"日")

输出

20211031

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

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

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

输出'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')	#将上述的时间格式转换为字符串格式

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

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

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

2.1 基本格式
hex()	#把十进制整形转换成16进制
bin()	#把十进制整形转换成二进制
oct()	#把十进制整形转换成八进制
chr()	#把整形转换成ASCII码表中对应的字符
ord()	#把ASCII码表中的字符转换成对应的整形
2.2 例子
hex(100)

输出'0x64'

bin(100)

输出'0b1100100'

oct(100)

输出'0c144'

chr(100)

输出'd'

ord('d')

输出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)

输出

b'68656c6c6f
b'68656c6c6f
b'hello'
b'hello'

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

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

<think>嗯,用户问的是Pythondatetime模块strftimestrptime方法的用法区别,可能他们刚开始学这个模块,或者在处理时间格式化的时候遇到了问题。首先,我得回忆一下这两个方法的作用。 strftime应该是把datetime对象格式化成字符串,对吧?比如用户有一个时间对象,想转成特定格式的字符串显示出来。而strptime应该是反过来,把字符串解析成datetime对象。记得这两个方法容易混淆,因为名字很像,但功能相反。 用户提供的引用里,有提到strftime是格式化时间成字符串,调用方式是datetime实例的方法。比如datetime.now().strftime('%b-%m-%y'),生成像'Sep-09-19'这样的字符串。引用1引用3都有例子,应该没错。 strptime是静态方法,属于datetime类,需要传入字符串对应的格式,来创建datetime对象。比如datetime.strptime('2020-01-01', '%Y-%m-%d')。引用2引用3中的代码也展示了这一点,特别是引用3强调格式必须一致,否则报错。 用户可能还不太清楚两者的参数使用,或者混淆了它们的调用对象。需要指出strftime是实例方法,而strptime是类方法。另外,格式字符串的占位符可能也是容易出错的地方,比如%Y是四位年份,%y是两位,%m是月份,%d是日期,%H是24小时制的小时等等。 蓝桥杯可能会考这方面的题目,比如时间转换或者计算时间差。比如给一个字符串时间,让转换datetime对象,再计算与当前时间的差值,或者格式化输出。这时候就需要正确使用这两个方法,否则会出错。 另外,用户可能在处理数据时需要从文件读取时间字符串,转换datetime对象进行处理,处理后再转回字符串保存。这时候两个方法都要用到,所以理解它们的区别很重要。 总结一下,回答的结构应该先分别解释两个方法的用途,然后对比它们的区别,再给出使用示例,最后可能加上常见错误或注意事项。比如调用strptime时格式不匹配会导致ValueError,这时候需要确保格式字符串输入字符串完全对应。 可能还需要提到时区的问题,不过datetime模块的naive对象默认没有时区信息,如果用户需要处理时区,可能需要用到pytz或者Python3.9以上的zoneinfo模块,但这可能超出当前问题的范围。 检查一下引用的内容是否正确。引用13都提到了strftime的用法,引用23提到了strptime的例子,应该没问题。需要确保在回答中正确引用这些例子,说明它们的来源,帮助用户理解。 用户提到的蓝桥杯可能涉及时间处理题目,比如计算倒计时、日期差等,这时候正确使用这两个方法非常关键。例如,用户需要从输入中读取时间字符串,转换datetime进行计算,再格式化输出结果,这时候strptimestrftime都会用到。 在示例代码中,可以给出两者的对比,比如现在时间转字符串,以及字符串转时间对象的例子。确保代码正确,并且符合用户提供的引用中的例子,比如使用datetime.now()strptime的参数。 最后,相关问题部分可能需要包括如何格式化时间、如何处理不同的日期格式、常见的格式符号有哪些,或者在解析时出错的解决方法等。这样用户能进一步深入理解这两个方法的应用场景常见问题。</think>### Pythonstrftimestrptime的用法及区别 #### 一、核心功能对比 1. **`strftime`(String Format Time)** - **作用**:将`datetime`对象格式化为**字符串** - **调用方式**:通过`datetime`实例调用 - **语法**:`datetime_obj.strftime(format)` - **示例**:将当前时间转为`Sep-09-19 20:12:56`格式 ```python from datetime import datetime time = datetime.now() string = time.strftime('%b-%m-%y %H:%M:%S') # 输出:Sep-09-19 20:12:56 [^1] ``` 2. **`strptime`(String Parse Time)** - **作用**:将**字符串**解析为`datetime`对象 - **调用方式**:通过`datetime`类调用(静态方法) - **语法**:`datetime.strptime(string, format)` - **示例**:解析`2020-01-01`字符串为时间对象 ```python day20 = datetime.strptime('2020-01-01 0:0:0', '%Y-%m-%d %H:%M:%S') # 输出datetime对象 [^2] ``` #### 二、关键区别总结 | 特性 | strftime | strptime | |--------------|-----------------------------|------------------------------| | **输入类型** | `datetime`对象 | 字符串 | | **输出类型** | 字符串 | `datetime`对象 | | **调用主体** | 实例方法(需通过对象调用) | 类方法(通过`datetime`类调用) | | **常见用途** | 时间显示、日志记录 | 数据解析、时间计算 | #### 三、蓝桥杯应用场景 1. **时间差计算** 结合两者计算特定时间与当前时间的差值: ```python target = datetime.strptime('2024-01-01', '%Y-%m-%d') now = datetime.now() delta = target - now # 输出时间差对象 [^3] ``` 2. **格式化输出要求** 比赛题目中常要求按特定格式输出时间,例如: ```python formatted_time = now.strftime('Year:%Y Month:%m Day:%d') ``` #### 四、注意事项 1. **格式符号必须严格匹配** 使用`strptime`时,若字符串与格式不匹配会抛出`ValueError`: ```python # 错误示例:字符串缺少时间部分 datetime.strptime('2024-08-20', '%Y-%m-%d %H:%M') # 报错 [^3] ``` 2. **常用格式符号速查** | 符号 | 含义 | 示例 | |------|---------------------|------------| | `%Y` | 4位年份 | 2024 | | `%m` | 2位月份(补零) | 08 | | `%d` | 2位日期(补零) | 20 | | `%H` | 24小时制小时 | 14 | | `%M` | 分钟 | 05 | | `%S` | 秒 | 30 |
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值