2020-04-11 python对时间日期的处理
一、time
对于Unix平台,初始时间是1970,01,01,00:00:00(UTC)
0.time.gmtime(0)
获取平台初始时间
>>> time.gmtime(0)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
1.时间类型的格式
struct_time类型
它是一个具有命名元组接口的对象:可以通过索引和属性名访问值。存在以下值:
- index---attribute---values
- 0---tm_year---年份
- 1---tm_mon---月份range[1,12]
- 2---tm_mday---天数range[1,31]
- 3---tm_hour---小时range[0,23]
- 4---tm_min---分钟range[0,59]
- 5---tm_sec---秒数range[0,61]
- 6---tm_wday---星期range[0,6],0是星期日
- 7---tm_yday---一年中的一天range[1,366]
- 8---tm_isdst---tm_isdst可以在夏令时生效时设置为1,而在夏令时不生效时设置为0。值-1表示这是未知的。
- N/A---tm_zone---时区名称的缩写
- N/A---tm_gmtoff---协调世界时以东偏移,以秒为单位.
例如,time.struct_time(tm_year=2019, tm_mon=3, tm_mday=20, tm_hour=23, tm_min=11, tm_sec=33, tm_wday=2, tm_yday=79, tm_isdst=0)
这里借大神的图一用 https://www.cnblogs.com/pal-duan/p/10568829.html
2.time.time()
返回当前时间戳
>>> import time >>> timestamp=time.time() >>> timestamp 1586613888.3396423
这个输出是非人类理解的时间戳,常用于计算程序运行时间
3.time.sleep()
用于让程序休眠一小段时间
import time start_time=time.time() time.sleep(5) end_time=time.time() print(end_time-start_time)
输出 :5.000166654586792(大概值)
4.time.asctime([time])
格式化时间类型
>>> time.asctime() 'Sun Apr 12 00:02:37 2020'
参数time : struct_time类型或tuple类型的时间,不填参数的话默认为time.localtime()得到的时间。
5.time.ctime([secs])
将时间戳的时间转换为表示本地时间的字符串。
>>> time.ctime() 'Sun Apr 12 00:42:20 2020'
参数secs : 时间戳,如果没有提供secs,则默认使用当前的时间戳,返回的当前时间。
6.time.gmtime([sec])
将时间戳类型的时间转换为UTC中的struct_time,其中dst标志始终为零。
>>> timestamp 1586613888.3396423 >>> time.localtime(timestamp) time.struct_time(tm_year=2020, tm_mon=4, tm_mday=11, tm_hour=22, tm_min=4, tm_sec=48, tm_wday=5, tm_yday=102, tm_isdst=0)
参数sec:时间戳类型的时间,如果没有提供secs或没有提供secs,则使用time()返回的当前时间。
返回值:struct_time类型的时间
time.localtime([sec])
作用:就像time.gmtime(),但是转换为本地时间。当dst应用于给定的时间时,dst标志被设置为1。
参数:时间戳类型的时间,如果没有提供secs或没有提供secs,则使用time()返回的当前时间。
返回值:struct_time类型的时间
time.mktime(t)
作用:将struct_time类型的时间转换为时间戳类型。
参数:struct_time类型的时间。
返回值:时间戳类型。
time.monotonic()-->float
作用:返回一个单调时钟的值(以分数秒为单位),即一个不能倒退的时钟。时钟不受系统时钟更新的影响。返回值的引用点是未定义的,因此只有连续调用的结果之间的差异是有效的。
time.monotonic_ns()-->int
作用:和time.monotonic()类似,但返回值为纳秒。
time.perf_counter()-->float
作用:返回性能计数器的值(以小数秒为单位),即具有最高可用分辨率来测量短时间的时钟。它确实包括在睡眠期间所花费的时间,并且是全系统的。返回值的引用点是未定义的,因此只有连续调用的结果之间的差异是有效的。
time.perf_counter_ns()-->int
作用:和time.perf_counter()类似,但返回值为纳秒。
time.process_time()-->float
作用:返回当前进程的系统和用户CPU时间之和(以小数秒为单位)。它不包括睡眠时间。根据定义,它是过程范围的。返回值的引用点是未定义的,因此只有连续调用的结果之间的差异是有效的。
time.process_time_ns()-->int
作用:和time.process_time()类似,但返回值为纳秒。
time.sleep(secs)
作用:在给定的秒数内挂起调用线程的执行。
参数:秒数,参数可以是一个浮点数,表示更精确的睡眠时间。
time.strftime(format[,t])
作用:将struct_time类型的时间转换为format参数指定格式的字符串。
参数:
- format:指定转换时间的字符串格式。
- t:struct_time类型的时间,如果不填默认为当前时间(即time.localtime()返回的时间)
返回值:指定格式的字符串。
注:
以下指令可以嵌入格式字符串中。它们显示时没有可选的字段宽度和精度规范。
- %a-->星期的缩写
- %A-->完整的星期的名称
- %b-->月份的缩写
- %B-->完整的月份名称
- %c-->'Wed Mar 20 21:40:19 2019'格式
- %d-->十进制数格式的日期[01,31]
- %H-->小时(24小时制) 十进制数[00,23]
- %I-->小时(12小时制) 十进制数[01,12]
- %j-->一年中的一天(十进制数)[001,366]
- %m-->月份(十进制数)[01,12]
- %M-->分钟数(十进制数)[00,59]
- %p-->AM或PM
- %S-->秒数[00,59]
- %U-->一年中的周数(星期日作为一周的第一天)十进制数[00,53],第一个星期日之前的所有日子被认为是第0周。
- %w-->星期数(十进制数)[0,6]
- %W-->一年中的周数(星期一作为一周的第一天)十进制数[00,53],第一个星期一之前的所有日子被认为是第0周。
- %x-->日期表示(月/日/不带世纪的年份)例如'03/20/19'
- %X-->时间表示(时:分:秒)例如'21:56:34'
- %y-->不带世纪的年份(十进制数)[00,99]
- %Y-->带世纪的年份(十进制数)
- %z-->时区偏移指示与格式+ HHMM或-HHMM形式的UTC / GMT的正或负时差,其中H表示十进制小时数字,M表示小数分钟数字[-23:59,+ 23:59]。
- %Z-->时区名称,例如'中国标准时间'
- %%-->'%'字符。
time.strptime(string[,format])
作用:根据格式解析表示时间的字符串。
参数:
- string:字符串类型的时间。
- format:提供字符串类型的时间的格式。
返回值:struct_time类型的时间。
注:ormat参数使用的指令与strftime()使用的指令相同;它默认为“%a %b %d %H:%M:%S %Y”,与ctime()返回的格式匹配。如果字符串不能按照格式进行解析,或者解析后有多余的数据,则会引发ValueError。当无法推断出更精确的值时,用于填充任何缺失数据的默认值是(1900、1、1、0、0、0、0、0、1、-1)。字符串和格式都必须是字符串。
time.time()-->float
作用:以秒为单位以浮点数返回历元之后的时间。
time.thread_time()-->float
作用:返回当前线程的系统和用户CPU时间之和(以小数秒为单位)。它不包括睡眠时间。它的定义是特定于线程的。返回值的引用点未定义,因此只有同一线程中连续调用的结果之间的差异是有效的。
time.thread_time_ns()-->int
作用:和time.thread_time()类似,但是返回值是纳秒。
time.time_ns()-->int
作用:和time.time()类似,但返回值是纳秒。
二、datetime
1.
>>> import datetime >>> dt = datetime.datetime.now() >>> print(dt) 2020-04-11 22:50:22.758587
2.其他属性
print(dt.year)
print(dt.month)
print(dt.day)
print(dt.hour)
print(dt.minute)
print(dt.second)
三、二者配合使用