Python提供了 日期时间 模块以处理日期和时间信息。datetime模块为不同的操作提供了有用的日期和时间相关的日期类型和方法。在本教程中,我们将学习如何使用datetime模块数据类型和方法。
导入日期时间模块
为了使用date对象、时间戳等,datetime模块应该用下面的import语句导入。
import datetime
列出datetime模块数据类型、方法
因为datetime模块提供了不同的日期和时间相关的数据类型、方法等,它们可以用dir()方法列出,如下所示。
dir(datetime)
['MAXYEAR', 'MINYEAR', 'builtins', 'cached', 'doc', 'file', 'loader', 'name', 'package', 'spec', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']
使用now()方法获取当前日期和时间
可以使用datetime提供的now()方法获取当前日期和时间。在下面的示例中,我们将打印当前日期和时间。
import datetimenow = datetime.datetime.now()print(now)
输出格式如下:YYYY-MM-DD HH:MM:SS.ssss,其中也打印毫秒。
2021-01-14 06:27:47.516828
创建具有指定日期和时间的日期对象
datetime模块的datetime对象可用于使用提供的值创建特定日期。所有关于日期时间的信息,如年、月、日、时、分、秒都可以明确地提供。这个 日期时间() 方法用于根据指定的日期和时间值创建datetime对象。
import datetime#Specify year, month and day for datea = datetime.datetime(2021,1,13)#Specify year, month, day, hour, minute, second for date and timeb = datetime.datetime(2021,1,13,12,20,55)
使用strftime()方法格式化日期和时间输出
在处理日期和时间信息时,以不同格式表达或格式化日期和时间信息非常重要。例如,月份可以用月份名称表示,如一月等 strftime() 方法可用于格式化存储在datetime对象中的日期和时间信息。
import datetime
#Specify year, month, day, hour, minute, second for date and time
x = datetime.datetime(2021,1,13,12,20,55)
#Weekday, short version Wedprint(x.strftime("%a"))
#Weekday, full version Wednesdayprint(x.strftime("%A"))
#Weekday as a number 0-6, 0 is Sunday 3print(x.strftime("%w"))
#Day of month 01-31 31print(x.strftime("%d"))
#Month name, short version Decprint(x.strftime("%b"))
#Month name, full version Decemberprint(x.strftime("%B"))
#Month as a number 01-12 12print(x.strftime("%m"))
#Year, short version, without century 18print(x.strftime("%y"))
#Year, full version 2018print(x.strftime("%Y"))
#Hour 00-23 17print(x.strftime("%H"))#Hour 00-12 05print(x.strftime("%I"))#AM/PM PMprint(x.strftime("%p"))#Minute 00-59 41print(x.strftime("%M"))#Second 00-59 08print(x.strftime("%S"))#Microsecond 000000-999999 548513print(x.strftime("%f"))#UTC offset +0100print(x.strftime("%z"))#Timezone CSTprint(x.strftime("%Z"))#Day number of year 001-366 365print(x.strftime("%j"))#Week number of year, Sunday as the first day of week, 00-53 52print(x.strftime("%U"))#Week number of year, Monday as the first day of week, 00-53 52print(x.strftime("%W"))#Local version of date and time Mon Dec 31 17:41:00 2018print(x.strftime("%c"))#Local version of date 12/31/18print(x.strftime("%x"))#Local version of time 17:41:00print(x.strftime("%X"))#A % character %print(x.strftime("%%"))#ISO 8601 year 2018print(x.strftime("%G"))#ISO 8601 weekday (1-7) 1print(x.strftime("%u"))#ISO 8601 weeknumber (01-53) 01print(x.strftime("%V"))
从时间戳获取日期
时间戳是Unix、Linux和BSD系统中常用的日期和时间表示形式。时间戳表示从1970年1月1日开始的总秒数。换句话说,从1970年1月1日00:00开始的总秒数。Linux系统中用于日志和其他操作的时间戳。
import datetimex= datetime.date.fromtimestamp(1529294364)print(x)
2018-06-18
两个日期或时间之间的时间差
这个 时间增量 是datetime模块提供的另一个有用类型。timedelta用于表示两个日期和时间之间的差异。timedelta将差异存储为年、月、日、小时、分钟和秒。两个日期和时间对象之间的时间差可以如下计算。
import datetime
a = datetime.datetime(2021,1,13,12,20,55)b = datetime.datetime(2018,5,23,14,40,15)td = a -bprint(td)
输出包含总天数以及小时、分钟和秒信息。
965 days, 21:40:40