浅谈Python中用datetime包进行对时间的一些操作
Python标准库中的datetime模块提供了多种处理日期和时间的工具。本文将介绍datetime模块中最常用的类和方法,以及如何使用这些类和方法进行日期和时间的格式化、计算、比较等操作。
datetime类
datetime类是日期和时间的基础类,它包含年、月、日、时、分、秒和微秒等信息。datetime类的初始化方法为:
datetime(year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]])
其中,year、month、day是必选参数,hour、minute、second、microsecond、tzinfo为可选参数。下面是一个创建datetime对象的示例:
import datetime
dt = datetime.datetime(2022, 1, 1)
print(dt)
输出结果为:2022-01-01 00:00:00
,其中时间部分小时、分钟、秒和微秒默认为0。
timedelta类
timedelta类表示日期和时间之间的差距,可以通过加、减timedelta对象来进行日期和时间的计算。timedelta类的初始化方法为:
timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
下面是一个计算日期差距的示例:
import datetime
dt1 = datetime.datetime(2022, 1, 1)
dt2 = datetime.datetime(2022, 1, 2)
delta = dt2 - dt1
print(delta.days) # 输出结果为1
strftime方法
strftime方法可以将datetime对象转换为指定格式的字符串。它需要一个格式字符串参数,格式字符串中包含一些占位符,用于表示日期和时间的各个部分。下表列出了strftime方法中常用的占位符:
占位符 | 说明 |
---|---|
%Y | 年份,4位数字 |
%m | 月份,2位数字(01-12) |
%d | 日子,2位数字(01-31) |
%H | 小时,24小时制(00-23) |
%M | 分钟,2位数字(00-59) |
%S | 秒数,2位数字(00-61) |
%f | 微秒,6位数字 |
%a | 简写的星期几名称(Sun-Sat) |
%A | 完整的星期几名称(Sunday-Saturday) |
%b | 简写的月份名称(Jan-Dec) |
%B | 完整的月份名称(January-December) |
%c | 日期和时间的字符串表示(如03/09/18) |
%p | AM或PM |
%z | UTC偏移量,格式+HHMM或-HHMM |
%Z | 时区名称(如UTC、CST) |
%% | %字符本身 |
下面是一个将datetime对象格式化为字符串的示例:
import datetime
dt = datetime.datetime(2022, 1, 1, 12, 30)
str = dt.strftime('%Y-%m-%d %H:%M:%S')
print(str) # 输出结果为:2022-01-01 12:30:00
strptime方法
strptime方法可以将字符串解析为datetime对象。它需要两个参数:一个是要解析的字符串,另一个是格式字符串。格式字符串的各个占位符必须与要解析的字符串中的日期和时间部分对应。下面是一个将字符串解析为datetime对象的示例:
import datetime
str = '20220101123000'
dt = datetime.datetime.strptime(str, '%Y%m%d%H%M%S')
print(dt) # 输出结果为:2022-01-01 12:30:00
在示例中,strptime()
方法的第二个参数描述输入字符串的格式,%Y
代表年份,%m
代表月份,%d
代表天,以此类推。
这个方法通常用于从文件中读取日期,将字符串转换为日期。为了确定具体的格式字符串,请参阅strftime()
的文档来获取更多信息。
示例1
计算一个人出生到现在的天数。
import datetime
birthday = datetime.datetime(1997, 4, 1)
today = datetime.datetime.now()
delta = today - birthday
print(delta.days)
示例2
将UNIX时间戳转换为datetime对象。
import datetime
timestamp = 1643527979
dt = datetime.datetime.fromtimestamp(timestamp)
print(dt.strftime('%Y-%m-%d %H:%M:%S'))
以上代码使用fromtimestamp
函数从一个UNIX时间戳创建一个datetime对象,然后使用strftime
函数将该对象格式化为字符串。输出结果为2022-01-30 01:46:19
。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈Python中用datetime包进行对时间的一些操作 - Python技术站