python-time模块
1、概述
1.1、提供时间各种相关内容。有关相关功能,另请参阅datetime和calendar模块。
1.2、表示时间通常有两种方式
一、时间戳 即从1970年1月1日00:00:00开始按秒计算的偏移量
二、 该语言自己的数据结构。Python中表示时间的数据结构元组,共有九个元素, 即:
(tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst)
1.3、UTC是协调世界时(以前称为格林威治标准时间,或GMT)。首字母缩略词UTC不是一个错误,而是英语和法语之间的妥协。
1.4、DST是夏令时,在一部分时间内通过(通常)一个小时调整时区。DST规则是魔法(由当地法律确定),并且可以逐年改变。C库有一个包含本地规则的表(通常它是从系统文件中读取的,以获得灵活性),并且是真正智慧在这方面的唯一来源。
2、模块变量
2.1、time.altzone
默认情况返回一个以秒为单位UTC的本地DST时区偏移量,如果本地DST时区在UTC的东部(如在西欧,包括英国),则为负。仅在daylight非零时使用此选项。
实例:
input: print(time.altzone) output: -32400
2.2、time.timezone
本地(非DST)时区的偏移量,以UTC以内的秒为单位(西欧大部分地区为负,美国为正,英国为零)。
实例:
input: print(time.timezone) output: -28800
2.3 time.daylight
当地时间是否反映夏令时,默认为0
实例:
input: print(time.daylight) output: 0
2.4 time.tzname
两个字符串的元组:第一个是本地非DST时区的名称,第二个是本地DST时区的名称。如果未定义DST时区,则不应使用第二个字符串。
3、模块方法
3.1、time.time()
返回时间戳,以秒为单位返回作为浮点数的时间
实例:
input: print(time.time()) output: 1572317083.5382848
3.2 time.localtime([seconds])
输入时间戳,默认当前时间,返回时间元组。像gmtime()但转换为本地时间。如果未提供secs或None,则使用由time()返回的当前时间。当DST适用于给定时间时,dst标志设置为1。
time.gmtime([seconds])
输入时间戳,默认当前时间,返回时间元组将从纪元开始以秒表示的时间转换为UTC中的struct_time,其中dst标志始终为零
我们是东8时区,比世界标准时间早8个小时
实例:
input: now = time.time() now_localtime = time.localtime(now) now_gmtime = time.gmtime(now) localtime = time.localtime(1545657766) gmtime = time.gmtime(1545776566) print("now_localtime:%s \nnow_gmtime:%s \nlocatime:%s \ngmtime:%s "\ % (now_localtime, now_gmtime, localtime, gmtime)) print(now_localtime.tm_mday,now_localtime.tm_mon) output: now_localtime:time.struct_time(tm_year=2019, tm_mon=10, tm_mday=29, tm_hour=11, tm_min=4, tm_sec=14, tm_wday=1, tm_yday=302, tm_isdst=0) now_gmtime:time.struct_time(tm_year=2019, tm_mon=10, tm_mday=29, tm_hour=3, tm_min=4, tm_sec=14, tm_wday=1, tm_yday=302, tm_isdst=0) locatime:time.struct_time(tm_year=2018, tm_mon=12, tm_mday=24, tm_hour=21, tm_min=22, tm_sec=46, tm_wday=0, tm_yday=358, tm_isdst=0) gmtime:time.struct_time(tm_year=2018, tm_mon=12, tm_mday=25, tm_hour=22, tm_min=22, tm_sec=46, tm_wday=1, tm_yday=359, tm_isdst=0) 29 10
time.struct_time
|
3.3、 time.ctime()
输入时间戳,返回本地时间字符串。等价于time.asctime(time.localtime())
time.asctime([tuple])
输入数组,返回字符串 。将表示由gmtime()或localtime()返回的时间的元组或struct_time转换为以下形式的字符串:'Sun Jun 20 23:21:05 1993' 。如果未提供t,则使用localtime()返回的当前时间。asctime()不使用区域设置信息。
实例:
input: print((time.ctime(time.time()))) print(time.asctime(time.localtime(time.time()))) output: Tue Oct 29 11:15:16 2019 Tue Oct 29 11:15:16 2019
3.4、time.mktime(tuple)
输入数组,返回时间戳。这是localtime()的反函数。如果输入值不能表示为有效时间,则会引发OverflowError或ValueError(这取决于无效值是由Python还是基础C库)
实例:
input: now = time.time() print(now) print(time.localtime(now)) print(time.mktime(time.localtime(now))) output: 1572315243.9480662 time.struct_time(tm_year=2019, tm_mon=10, tm_mday=29, tm_hour=10, tm_min=14, tm_sec=3, tm_wday=1, tm_yday=302, tm_isdst=0) 1572315243.0
3.7 strftime(format[, tuple])
将表示由gmtime()或localtime()返回的时间的元组或struct_time转换为由格式指定的字符串参数。如果未提供t,则使用localtime()返回的当前时间。格式必须是字符串。如果t中的任何字段超出允许范围,则会引发ValueError
strptime(string, format)
根据格式解析表示时间的字符串。返回值是由gmtime()或localtime()返回的struct_time。如果string不能根据格式解析,或者如果解析后有过多的数据,则会引发ValueError
实例:
input: now = time.time() now_str = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(now)) now_tup = time.strptime(now_str,'%Y-%m-%d %H:%M:%S') print("now_str:%s \t now_tup:%s" %(now_str,now_tup)) output: now_str:2019-10-29 10:35:25 now_tup:time.struct_time(tm_year=2019, tm_mon=10, tm_mday=29, tm_hour=10, tm_min=35, tm_sec=25, tm_wday=1, tm_yday=302, tm_isdst=-1)

以下指令可以嵌入格式字符串中。它们没有可选的字段宽度和精度规范,并由strftime()结果中指示的字符替换:
| 指示 | 含义 |
|---|---|
%a |
Locale的缩写工作日名称。 |
%A |
Locale的整个工作日名称。 |
%b |
语言环境的缩写月份名称。 |
%B |
Locale的完整月份名称。 |
%c |
语言环境的适当日期和时间表示。 |
%d |
一个十进制数字[01,31]。 |
%H |
小时(24小时制),十进制数[00,23]。 |
%I |
小时(12小时制)十进制数[01,12]。 |
%j |
一年中的十进制数[001,366]。 |
%m |
月为十进制数[01,12]。 |
%M |
以十进制数分钟[00,59]。 |
%p |
Locale相当于AM或PM。 |
%S |
秒为十进制数[00,61]。 |
%U |
年的星期数(星期日为星期的第一天)为十进制数[00,53]。在第一个星期日之前的新的一年的所有天被认为是在第0周。 |
%w |
工作日为十进制数[0(星期日),6]。 |
%W |
年的星期数(星期一作为星期的第一天)作为十进制数[00,53]。在第一个星期一之前的新的一年中的所有天被认为是在第0周。 |
%x |
语言环境的适当日期表示。 |
%X |
语言环境的适当时间表示。 |
%y |
年,无世纪作为十进制数[00,99]。 |
%Y |
年份以世纪为十进制数。 |
%z |
指示与+ HHMM或-HHMM形式的UTC / GMT的正或负时差的时区偏移,其中H表示十进制小时数字,M表示十进制分数字[-23:59,+23:59]。 |
%Z |
时区名称(如果没有时区,则不包含字符)。 |
%% |
字面值'%'字符。 |
浙公网安备 33010602011771号