一,时间概念

GMT格林威治标准时间(0时区时间)。

UTC:世界标准时间,与GMT相比加入了闰秒时间,通常作为是世界上调节时钟和时间的主要时间标准。

LT:Local Time的缩写,表示本地时间,通常为UTC或者GMT时间加上时区(东时区为正,西时区为负)。

二,时间操作

1,时间形式:

  (1)timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量

  (2)struct_time时间元组,即struct_time类

  (3)format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。

  (4)标准时间字符串,国际通用时间字符串,格式为:星期缩写 月份缩写 日 时:分:秒 年,如:Mon Sep 20 17:02:25 2021

2,函数说明:

函数名 参数说明 功能说明

 time

  获取当前本地timestamp时间戳(秒),python2的精度为秒,python3的精度可以达到微妙
time_ns   获取当前本地timestamp时间戳(纳秒数),仅python3有
localtime

seconds:timestamp时间戳(秒),默认值为None

将timestamp时间戳转换成struct_time,如果为None则为当前时间

mktime p_tuple:struct_time时间戳 将struct_time时间戳转换成timestamp(秒)
ctime seconds:timestamp时间戳(秒) 将timestamp时间戳转换成标准时间字符串
asctime p_tuple:struct_time时间戳 将struct_time时间戳转换成标准时间字符串
gmtime

seconds:timestamp时间戳(秒),默认值为None

根据timestamp时间戳获取UTC的struct_time时间戳,如果为None则为当前时间

sleep

seconds:timestamp时间戳(秒)

睡眠函数,可为小数,表示毫秒

strftime

format:格式化字符串
p_tuple:struct_time时间戳

 将struct_time时间戳根据format转换成format_time格式化时间
strptime

string:format_time格式化时间
format:格式化字符串

 将format_time格式化时间根据format转换成struct_time时间戳

3,format格式化说明:

格式 含义
%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 时区的名字(如果不存在为空字符)

4,struct_time说明:

属性                              值
tm_year(年)                    比如2011 
tm_mon(月)                     1 - 12
tm_mday(日)                    1 - 31
tm_hour(时)                    0 - 23
tm_min(分)                     0 - 59
tm_sec(秒)                     0 - 61
tm_wday(weekday)               0 - 6(0表示周日)
tm_yday(一年中的第几天)          1 - 366
tm_isdst(是否是夏令时)           默认为-1
tm_gmtoff(到UTC时间时间差,秒数)
tm_zone(时区)

5,基础操作:

 1 import time
 2 
 3 # 获取当前timestamp时间戳
 4 print("time:", time.time())
 5 print("time_ns:", time.time_ns())
 6 
 7 # timestamp转struct_time
 8 print("localtime:", time.localtime())
 9 
10 # timestamp转标准时间
11 print("ctime:", time.ctime())
12 # struct_time转标准时间
13 print("ctime:", time.asctime())
14 
15 # struct_time转timestamp
16 x = time.localtime()
17 print("mktime:", time.mktime(x))
18 
19 # timestamp转UTC时间
20 print("gmtime:", time.gmtime(time.mktime(x)))
21 
22 # struct_time转format_time
23 s = time.strftime("%Y %m %d %H:%M:%S %Z", x)
24 print("strftime:", s)
25 
26 # format_time转struct_time
27 print("strptime:", time.strptime(s, "%Y %m %d %H:%M:%S %Z"))

三,日期操作

日期操作模块为datetime,其右date(年月日)和time(时分秒)组成

1,主要函数说明:

函数名 参数说明 功能说明 函数类型
new tz:时区信息(需要实现tzinfo基类,跨时区操作时需要),默认None为当前时区 根据当前本地时间生成datetime对象 类函数
utcnew   生成当前utc日期的datetime对象 类函数
combin

date:日期对象(年,月,日)

time:  时间对象(时,分,秒,毫秒)

根据日期和时间构建datetime对象 类函数
fromtimestamp

t:timestamp时间戳

tz:时区信息,默认None为当前时区

根据timestamp构建datetime对象 类函数
utcfromtimestamp t:timestamp时间戳 根据timestamp时间戳构建utc日期的datetiem对象 类函数
fromisoformat date_string:datetime日期字符串(如:2021-12-23 12:00:00.123456) 根据日期字符串生成datetime对象 类函数
timestamp   将datetime对象转换成timestamp时间戳 对象函数
timetuple  

将datetime对象转换成struct_time时间戳

对象函数
utctimetuple   将datetime对象转换成utc的struct_time时间戳 对象函数
replace year,month,day,hour,minute,second,microsecond 替换datetime对对应的指 对象函数
ctime   将datetime对象转换成标准时间字符串 对象函数
date   根据datetime对象获取date对象值 对象函数
time   根据datetime对象获取time对象值 对象函数
isoformat   生成datetime日期字符串 对象函数
strftime fmt:格式化日期字符串 根据fmt格式化字符串将datetime对象转换成时间字符串(time.strftime) 对象函数
strptime

date_string:日期字符串

format:格式花字符串

根据format将时间字符串转换成datetime对象(同time.strptime) 类函数

2,主要属性:

  year :年,month:月,day:日

  hour:时,minute:分,second:秒,microsecond:毫秒

3,基本操作:

import datetime
import time

# 获取当前日期
x = datetime.datetime.now()
print("datetime:", x)
print("year:{0}, month:{1}, day:{2}, hour:{3}, minute:{4}, second:{5}, microsecond:{6}".
      format(x.year, x.month, x.day, x.hour, x.minute, x.second, x.microsecond))

# 获取当前UTC日期
print("utcnow:", datetime.datetime.utcnow())

# 根据date和time合成datetime对象
dt = datetime.date(2021, 10, 5)
tm = datetime.time(10, 12, 32, 123456)
print("combine:", datetime.datetime.combine(dt, tm))

# 根据timestamp生成datetime对象
t = time.time()
print("fromtimestamp:", datetime.datetime.fromtimestamp(t))
print("utcfromtimestamp:", datetime.datetime.utcfromtimestamp(t))

# 根据日期字符串生成datetime对象
print("fromisoformat:", datetime.datetime.fromisoformat("2021-02-20 22:14:26.000389"))

# 根据格式化输出时间字符串
s = x.strftime("%Y %m %d %H:%M:%S")
print("strftime:", s)

# 根据格式化将时间字符串构成datetime对象
print("strptime:", datetime.datetime.strptime(s, "%Y %m %d %H:%M:%S"))

# 运行结果如下:
# datetime: 2021-09-20 23:01:01.950272
# year:2021, month:9, day:20, hour:23, minute:1, second:1, microsecond:950272
# utcnow: 2021-09-20 15:01:01.950272
# combine: 2021-10-05 10:12:32.123456
# fromtimestamp: 2021-09-20 23:01:01.950273
# utcfromtimestamp: 2021-09-20 15:01:01.950273
# fromisoformat: 2021-02-20 22:14:26.000389
# strftime: 2021 09 20 23:01:01
# strptime: 2021-09-20 23:01:01

四,日期计算

日期计算主要为日期的加减计算和比较

支持的比较运算有:>,>=,<,<=,!=,==

1,基本操作:

import datetime

# 日期比较
x = datetime.datetime.now()
dt = datetime.date(2000, 10, 10)
tm = datetime.time(12, 0, 0, 111111)
x2 = datetime.datetime.combine(dt, tm)
print("x:", x, ", x2:", x2, ", x>x2:", x>=x2)

# 日期计算
print("x+2days:", x+datetime.timedelta(days=2))
print("x-2days:", x-datetime.timedelta(days=2))
print("x+1week:", x+datetime.timedelta(weeks=1))print("x-1week:", x-datetime.timedelta(weeks=1))
print("x+10hours:", x+datetime.timedelta(hours=10))

# 运行结果
# x: 2021-09-20 23:28:13.401656 , x2: 2000-10-10 12:00:00.111111 , x>x2: True
# x+2days: 2021-09-22 23:28:13.401656
# x-2days: 2021-09-18 23:28:13.401656
# x+1week: 2021-09-27 23:28:13.401656
# x-1week: 2021-09-13 23:28:13.401656
# x+10hours: 2021-09-21 09:28:13.401656

 

posted on 2021-09-20 18:12  lwp-boy  阅读(830)  评论(0编辑  收藏  举报