Python中的日期时间处理详解

Python中的日期时间处理详解,第1张

概述Python中关于时间日期的处理库有三个:time、datetime和Calendar,其中datetime又有datetime.date、datetime.time、datetime.datetime三个类。而时间又可以分为时间戳、本地时间和UTC时间(世界标准时间)。是不是

Python中关于时间、日期的处理库有三个:time、datetime和Calendar,其中datetime又有datetime.date、datetime.time、datetime.datetime三个类。而时间又可以分为时间戳、本地时间和UTC时间(世界标准时间)。是不是听起来有点乱?那么他们相互之间有什么区别?有什么联系?又如何转换呢?

time模块

在time模块中,时间有三种表现形式:

时间戳,一般指Unix时间戳,是从1970年开始到现在的秒数。
本地时间的struct_time形式:一个长度为11的命名元组,第一位为年,第二位为月....
UTC时间的struct_time形式:一个长度为11的命名元组,类似于上个,只不过为UTC时间
其中后两者的类型一致,区别在于一个是本地时间(localtime),一个是utc时间。

各种时间形式的获取方式:

print("time stamp:",time.time())     # 时间戳:1479193181.829338print("local time:",time.localtime())  # struct_time类型的本地时间time.struct_time(tm_year=2016,tm_mon=11,tm_mday=15,tm_hour=14,tm_min=59,tm_sec=41,tm_wday=1,tm_yday=320,tm_isdst=0)print("utc time:",time.gmtime())     # struct_time类型的utc时间time.struct_time(tm_year=2016,tm_hour=6,tm_isdst=0)

这里可以看出,本地时间(北京时间)和UTC时间相差8个小时。

各种时间形式的转换:

time_stamp = time.time()        # 时间戳local_time = time.localtime(time_stamp)# 时间戳转struct_time类型的本地时间utc_time = time.gmtime(time_stamp)   # 时间戳转struct_time类型的utc时间time_stamp_1 = time.mktime(local_time) # struct_time类型的本地时间转时间戳time_stamp_2 = calendar.timegm(utc_time)# struct_time类型的utc时间转时间戳print(time_stamp,time_stamp_1,time_stamp_2)

各种时间形式和字符串之间的转换:

print(time.ctime(time_stamp))    # 时间戳转字符串(本地时间字符串)print(time.asctime(local_time))   # struct_time类型的本地时间转字符串print(time.asctime(utc_time))    # struct_time类型的utc时间转字符串# struct_time类型的本地时间转字符串:自定义格式print(time.strftime("%Y-%m-%d,%H:%M:%s,%w",local_time))# struct_time类型的utc时间转字符串:自定义格式print(time.strftime("%Y-%m-%d,utc_time))struct_time = time.strptime("2016-11-15,15:32:12,2","%Y-%m-%d,%w")    # 字符串转struct_time类型

datetime模块

接下来再看datetime模块。该模块中包含4个主要的类:

datetime.time:时间类,只包含时、分、秒、微秒等时间信息。
datetime.date:日期类,只包含年、月、日、星期等日期信息。
datetime.datetime:日期时间类,包含以上两者的全部信息。
datetime.timedelta:时间日期差值类,用来表示两个datetime之间的差值。
关于各个类的基本用法比较简单,建议看官方文档:datetime module

这里主要说一下datetime.datetime类的用法,其他两个的用法类似,只有轻微差别:

a_datetime_local = datetime.datetime.Now() # 获取datetime.datetime类型的本地时间a_datetime_utc = datetime.datetime.utcNow() # 获取datetime.datetime类型的utc时间# datetime.datetime类型转字符串print(a_datetime_local.strftime("%Y-%m-%d,%w")) # datetime.datetime类型转字符串print(a_datetime_utc.strftime("%Y-%m-%d,%w"))  a_datetime = datetime.datetime.strptime("2016-11-15,%w")  # 字符串转

datetime.datetime格式

datetime类型和时间戳、struct_time类型的相互转换

datetime.datetime和时间戳、struct_time之间,也能够相互转换:

time_stamp = a_datetime_local.timestamp()  # datetime类型转时间戳print(time_stamp)a_datetime_local = datetime.datetime.fromtimestamp(time.time())   # 时间戳转datetime.datetime类型的本地时间a_datetime_utc = datetime.datetime.utcfromtimestamp(time.time())  # 时间戳转datetime.datetime类型的utc时间print(a_datetime_local,a_datetime_utc)print(a_datetime_local.timetuple())   # datetime类型转struct_time类型print(a_datetime_utc.utctimetuple())  # datetime类型转struct_time类型

本文主要讲了各种时间、日期类型的基本用法,以及他们之间相互转换的方法,以及他们和字符串之间相互转换的方法。

老规矩,文中代码已上传至github:https://github.com/xianhu/LearnPython

本站备份下载地址:http://xz.jb51.net:81/201611/yuanma/LearnPython(jb51.net).zip

总结

以上是内存溢出为你收集整理的Python中的日期时间处理详解全部内容,希望文章能够帮你解决Python中的日期时间处理详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1203531.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存