Python中time模块和datetime模块的常用操作以及几种常用时间格式间的转换
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,最常见以及常用的几种时间格式1、时间戳(timestamp),时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。2、时间元组(struct_time),共有九个元素组。3、格式化
千家信息网最后更新 2025年02月01日Python中time模块和datetime模块的常用操作以及几种常用时间格式间的转换
最常见以及常用的几种时间格式
1、时间戳(timestamp),时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。
2、时间元组(struct_time),共有九个元素组。
3、格式化时间(format time ),可以格式化为固定或者自定义格式,增加可读性。
#!/usr/bin/env python# -*- coding:utf-8 -*-import time#时间戳格式,默认获取当前时间 1500029143.7640195timestamp = time.time()print("获取当前时间戳:",timestamp)#获取元组(struct_time)的形式,默认获取当前时间struct_time_UTC8= time.localtime()print("获取当前东8区(中国)的时间:",struct_time_UTC8)struct_time_UTC= time.gmtime()print("获取当前的世界时间:",struct_time_UTC)'''注意:UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时'''#获取格式化后的时间,即将时间格式化为%Y-%m-%d %H:%M:%S格式的字符串format_time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())print("按照指定格式格式化后的时间:",format_time)# Fri Jul 14 18:45:43 2017(%a %b %d %H:%M:%S %Y)格式#将时间戳格式的时间转化成%a %b %d %H:%M:%S %Y格式,默认是将当前时间格式化style_time1 = time.ctime()print("将时间戳转化成%a %b %d %H:%M:%S %Y格式:",style_time1)#将元组(struct_time)形式的时间转换成%a %b %d %H:%M:%S %Y格式,默认也是将当前时间格式化style_time2 = time.asctime()print("将类似于元组(struct_time)转换成%a %b %d %H:%M:%S %Y格式:",style_time2)'''运行结果获取当前时间戳: 1500029371.4988112获取当前东8区(中国)的时间: time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=18, tm_min=49, tm_sec=31, tm_wday=4, tm_yday=195, tm_isdst=0)获取当前的世界时间: time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=49, tm_sec=31, tm_wday=4, tm_yday=195, tm_isdst=0)按照指定格式格式化后的时间: 2017-07-14 18:49:31将时间戳转化成%a %b %d %H:%M:%S %Y格式: Fri Jul 14 18:49:31 2017将类似于元组(struct_time)转换成%a %b %d %H:%M:%S %Y格式: Fri Jul 14 18:49:31 2017'''
一些基本概念
1.时间戳(timestamp)的形式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。返回时间戳方式的函数主要有time(),clock()等,默认是返回当前时间的时间戳。
2.元组(struct_time)的形式:struct_time元组共有9个元素。返回struct_time的函数主要有gmtime(),localtime(),strptime(),默认是返回当前时间的元组 (struct_time)形式,但也可以将其它时间段或者其它形式的时间格式转换为元组(struct_time)形式。
struct_time元组9个元素详细说明:
'''0 tm_year(年) 比如20111 tm_mon(月) 1 - 122 tm_mday(日) 1 - 313 tm_hour(时) 0 - 234 tm_min(分) 0 - 595 tm_sec(秒) 0 - 616 tm_wday(weekday) 0 - 6(0表示周日)7 tm_yday(一年中的第几天) 1 - 3668 tm_isdst(是否是夏令时) 默认为-1'''
几种时间格式的转换
#!/usr/bin/env python# -*- coding:utf-8 -*-import time#将一个时间戳转化为一个元组(struct_time)形式的时间格式:tuple_struct = time.localtime(1499703018.0)print("将一个时间戳转化为一个类似元组形式的时间格式:",tuple_struct) #将一个时间戳转化为一个类似元组形式的时间格式: time.struct_time(tm_year=1973, tm_mon=11, tm_mday=30, tm_hour=5, tm_min=33, tm_sec=9, tm_wday=4, tm_yday=334, tm_isdst=0)#将元组(struct_time)形式的时间格式转化为时间戳:t = (2017, 7, 11, 0, 10, 18, 1, 192, 0)timestamp1 = time.mktime(time.struct_time(t))print("将类似于元组形式的时间格式转化为时间戳:",timestamp1)#将元组(struct_time)形式的时间格式转化为指定的格式如:%Y-%m-%d %H:%M:%Sformat_time1 = time.strftime("%Y-%m-%d %H:%M:%S",t) #2017-07-11 00:10:18print("将类似于元素形式的时间格式转化为指定的格式如:%Y-%m-%d %H:%M:%S:",format_time1)#将格式化后的时间转化成元组(struct_time)形式的时间格式tuple_struct2 = time.strptime("2017-07-11 00:10:18","%Y-%m-%d %H:%M:%S")print("将格式化后的时间转化成元组形式的时间格式:",tuple_struct2)'''运行结果将一个时间戳转化为一个类似元组形式的时间格式: time.struct_time(tm_year=2017, tm_mon=7, tm_mday=11, tm_hour=0, tm_min=10, tm_sec=18, tm_wday=1, tm_yday=192, tm_isdst=0)将类似于元组形式的时间格式转化为时间戳: 1499703018.0将类似于元素形式的时间格式转化为指定的格式如:%Y-%m-%d %H:%M:%S: 2017-07-11 00:10:18将格式化后的时间转化成元组形式的时间格式: time.struct_time(tm_year=2017, tm_mon=7, tm_mday=11, tm_hour=0, tm_min=10, tm_sec=18, tm_wday=1, tm_yday=192, tm_isdst=-1)'''
为了方便理解和记忆这几种常用时间格式的转化,请看下边的图:
时间格式化时的参考帮助信息
'''时间格式化时的参考帮助信息:%a 本地(locale)简化星期名称 %A 本地完整星期名称 %b 本地简化月份名称 %B 本地完整月份名称 %c 本地相应的日期和时间表示 %d 一个月中的第几天(01 - 31) %H 一天中的第几个小时(24小时制,00 - 23) %I 第几个小时(12小时制,01 - 12) %j 一年中的第几天(001 - 366) %m 月份(01 - 12) %M 分钟数(00 - 59) %p 本地am或者pm的相应符 %S 秒(01 - 61) %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。 %w 一个星期中的第几天(0 - 6,0是星期天) 三%W 和%U基本相同,不同的是%W以星期一为一个星期的开始。 %x 本地相应日期 %X 本地相应时间 %y 去掉世纪的年份(00 - 99) %Y 完整的年份 %Z 时区的名字(如果不存在为空字符) %% '%'字符'''
######################################################
datetime模块重新封装了time模块,提供了更多的类如:date、time、datetime、timedelta等。
1.datetim.data的常见用法示例
#!/usr/bin/env python# -*- coding:utf-8 -*-import datetime# 获得一个date对象d = datetime.date(2017,7,14) #参数年、月、日#data能表示的最大日期d_max = d.maxprint("data能表示的最大日期:",d_max)#data能表示的最小日期d_min = d.minprint("data能表示的最大日期:",d.min)#获取当前日期d_today = d.today()print("获取当前日期:",d.today())#获取年、月、日year = d.yearmonth = d.monthday = d.dayprint("获取年%s、月%s、日%s"% (year,month,day))#根据给定的时间戳返回对应的日期d_date = d.fromtimestamp(12312432432)print("根据给定的时间戳返回对应的日期:",d_date)#返回weekday,如果星期一则返回0,星期二返回1,以此类推,2017-7-14是星期五d_weekday = d.weekday()print("返回weekday为:",d_weekday)#返回格式化为(YYYY-MM-DD)的字符串d_format = d.isoformat()print("返回格式化(YYYY-MM-DD)的字符串:",d_format)#返回格式化的日期字符串类似time模块的strftimed_strftime = d.strftime("%Y-%m-%d %H:%M:%S")print("格式化后的字符串:",d_strftime)#返回时间的元组(struct_time)形式d_tuple = d.timetuple()print("返回时间的元组(struct_time)形式:",d_tuple)'''运行结果data能表示的最大日期: 9999-12-31data能表示的最大日期: 0001-01-01获取当前日期: 2017-07-14获取年2017、月7、日14根据给定的时间戳返回对应的日期: 2360-03-02返回weekday为: 4返回格式化(YYYY-MM-DD)的字符串: 2017-07-14格式化后的字符串: 2017-07-14 00:00:00返回时间的元组(struct_time)形式: time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=-1)'''
2.datetime.time的常见用法示例
#!/usr/bin/env python# -*- coding:utf-8 -*-import datetimedt = datetime.time(17,30,00) #参数时、分、秒#time能表示的最大时间dt_max = dt.maxprint("能表示的最大时间:",dt_max)#time能表示的最小时间dt_min = dt.minprint("能表示的最小时间:",dt_min)#获取时、分、秒、微妙hour = dt.hourminute = dt.minutesecond = dt.secondmicrosecond = dt.microsecondprint("获取时%s、分%s、秒%s、微妙%s"% (hour,minute,second,microsecond))#返回时间的格式化字符串(HH:MM:SS)dt_format = dt.isoformat()print("返回时间的格式化字符串(HH:MM:SS):",dt_format)#格式化,类似于time模块的strftimedt_strftime = dt.strftime("%H:%M:%S")print("格式化:",dt_strftime)'''运行结果能表示的最大时间: 23:59:59.999999能表示的最小时间: 00:00:00获取时17、分30、秒0、微妙0返回时间的格式化字符串(HH:MM:SS): 17:30:00格式化: 17:30:00'''
3.datetime.datetime的常见用法示例
#!/usr/bin/env python# -*- coding:utf-8 -*-import datetime#获得当前的本地时间d_today = datetime.datetime.today()print("获得当前的本地时间:",d_today)#获得当前时间,如果提供了时区参数tz,则根据时区参数获取指定时区的时间d_now = datetime.datetime.now()print("获得当前时间:",d_now)#获取当前的世界标准时间(即格林威治天文时间)d_utc = datetime.datetime.utcnow()print("获取当前的世界标准时间(即格林威治天文时间):",d_utc)#将时间戳转化成格式化的字符串,可以时区参数tz转成指定时区的格式化时间d_fromtimestamp = datetime.datetime.fromtimestamp(123214324)print("将时间戳转化成格式化的字符串:",d_fromtimestamp)#根据时间戳以utc标准时区时间来进行格式化d_utcfromtimestam = datetime.datetime.utcfromtimestamp(123214324)print("将时间戳以utc标准时区时间来转化成格式化的字符串:",d_utcfromtimestam)'''注意通过上边输出结果的比较我们会发现通过fromtimestamp和utcfromtimestamp转化统一时间戳得到的时间正好差了8h'''##################dd = datetime.datetime(2017,7,14,17,30,00)#将指定的时间转化成格式化的字符串,类似于time的strftimedd_strftime = dd.strftime("%Y-%m-%d %H:%M:%S")print("将指定的时间进行格式化",dd_strftime)#返回weekday,如果星期一则返回0,星期二返回1,以此类推,2017-7-14是星期五dd_weekday = dd.weekday()print("返回weekday为:",dd_weekday)#获得元组(struct_time)形式的时间格式dd_timetuple = dd.timetuple()print("获得元组(struct_time)形式的时间格式:",dd_timetuple)#dd_utctimetuple = dd.utctimetuple() #以utc标准获取#返回一个格式化为%Y-%m-%d %H:%M:%S格式的字符串dd_isoformat = dd.isoformat()print("返回一个格式化为%Y-%m-%d %H:%M:%S格式的字符串:",dd_isoformat)'''运行结果获得当前的本地时间: 2017-07-14 18:57:59.309859获得当前时间: 2017-07-14 18:57:59.309858获取当前的世界标准时间(即格林威治天文时间): 2017-07-14 10:57:59.309858将时间戳转化成格式化的字符串: 1973-11-27 10:12:04将时间戳以utc标准时区时间来转化成格式化的字符串: 1973-11-27 02:12:04将指定的时间进行格式化 2017-07-14 17:30:00返回weekday为: 4获得元组(struct_time)形式的时间格式: time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=17, tm_min=30, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=-1)返回一个格式化为%Y-%m-%d %H:%M:%S格式的字符串: 2017-07-14T17:30:00'''
4.datetime.timedelta的常见用法示例
#!/usr/bin/env python# -*- coding:utf-8 -*-# Author:Yaosheng Wangimport datetime#获取当前时间now_date = datetime.datetime.now()print("获取当前时间:",now_date)#获取五天后的时间five_later = datetime.datetime.now() + datetime.timedelta(5)print("获取五天后的时间:",five_later)#获取五天前的时间five_ago = datetime.datetime.now() - datetime.timedelta(5)print("获取五天前的时间:",five_ago)#获的三个小时后的时间three_hour_later = datetime.datetime.now() + datetime.timedelta(hours=3)print("获的三个小时后的时间:",three_hour_later)'''运行结果获取当前时间: 2017-07-14 19:00:04.955596获取五天后的时间: 2017-07-19 19:00:04.955596获取五天前的时间: 2017-07-09 19:00:04.955596获的三个小时后的时间: 2017-07-14 22:00:04.955596'''
时间
格式
形式
字符
字符串
星期
日期
时区
最大
标准
世界
小时
结果
utf-8
五天
运行
元素
参数
常见
模块
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
java软件开发的屏幕大小
软件开发外包怎么收费
一台1u服务器的辐射有多大
软件开发在会计上属于什么行业
局域网服务器搭建虚拟机
不得使用网络技术措施的情形
服务器网卡可以配置不同网关吗
机网络技术学什么
台式机电脑能做服务器存储使用吗
软件开发使用三方平台的合规性
计算机专科数据库及其应用
西安彩票网络安全公司
外包网络技术团队
邮储银行网络安全分析报告
合肥交通软件开发需要多少钱
电脑服务器可以装显卡吗
浙江综合软件开发商家
数据存储至数据库并读取
黄鹤杯网络安全
网络安全知识宣传海报
服务器远程托管
免费期刊数据库
宣传企业网络安全信息
服务器端口能改成什么
工业网络控制软件开发
上海现代软件开发模型
网络安全公司的性质
行政单位网络安全建设
网络安全知识宣传海报
国泰安数据库下载数据库