time模块
时间戳是从1970年1月1日0时整开始计算的秒的偏移量。即当是时,时间戳为0,再往前负增加。
1,获取当前时间戳
import time
time.time()
1525679844.273
2,获取给定时间戳的本地时间(当前时区)(未提供时间戳则默认当前时间戳)——结构化时间(元组方式)
import time
t=time.localtime()
print(t)
t.tm_year #获取年
time.struct_time(tm_year=2018, tm_mon=5, tm_mday=7, tm_hour=16, tm_min=11, tm_sec=17, tm_wday=0, tm_yday=127, tm_isdst=0)
2018
另一种时间戳转结构化时间的方式——-转为utc时间(英国格林威治时间)
import time
time.gmtime()
time.struct_time(tm_year=2018, tm_mon=5, tm_mday=7, tm_hour=8, tm_min=7, tm_sec=24, tm_wday=0, tm_yday=127, tm_isdst=0)
3,结构化时间转时间戳
import time
print(time.mktime(time.localtime()))
1525681030.0
4,线程推迟指定的时间运行。时间单位为秒
import time
time.sleep(1)
*将结构化时间转为以下格式
import time
time.asctime() #参数默认默认当前time.localtime()
'Mon May 7 16:27:31 2018'
*将时间戳转化为以下格式
import time
time.ctime() #参数默认当前时间time.time()
'Mon May 7 16:26:38 2018'
5,将结构化时间转化为字符串时间(前参为格式,后参结构化时间)
import time
time.strftime('%x %X',time.localtime())
'05/07/18 16:42:10'
6,将字符串时间转为结构化时间(字符串时间,格式)
time.strptime('2016:12:24:17:50:36','%Y:%m:%d:%X')
time.struct_time(tm_year=2016, tm_mon=12, tm_mday=24, tm_hour=17, tm_min=50, tm_sec=36, tm_wday=5, tm_yday=359, tm_isdst=-1)
%Y 表示年
%y 表示年但会省略前两位数字
%m 表示月份
%d 表示天
%H 表示小时
%M 表示分钟
%S 表示秒
%X 表示固定的时间格式
%x 表示固定的日格式
%U 表示一年中第几周
%p 表示am、pm
%w 表示周几 0(周日)至6(周六)
以上为常用格式
转换逻辑:
字符串时间—(time.strptime)—>结构化时间—(time.mktime)—>时间戳
时间戳—(time.localtime)—>结构化时间—(time.strftime)—>字符串时间
例1:将1997年10月1日12时01分转换为时间戳
import time
t1 = time.strptime('10/01/97 12:01:00','%x %X')
print(t1)
t2 = time.mktime(t1)
print(t2)
time.struct_time(tm_year=1997, tm_mon=10, tm_mday=1, tm_hour=12, tm_min=1, tm_sec=0, tm_wday=2, tm_yday=274, tm_isdst=-1)
875678460.0
例2:将时间戳875678460转换为字符串时间
import time
t1 = time.localtime(875678460)
t2 = time.strftime('%Y-%m-%d %H:%M:%S',t1)
print(t2)
1997-10-01 12:01:00
datetime模块
import datetime
t1 = datetime.datetime.now() #返回当前datetime
print(t1)
print(t1.year)
print(t1.strftime('%x %X')) #转换字符串时间
2018-05-07 17:22:31.585000
2018
05/07/18 17:22:31
import datetime
datetime.date.fromtimestamp(875678460) #时间戳转日期
datetime.date(1997, 10, 1)
时间运算
import datetime
print(datetime.datetime.now() + datetime.timedelta(1)) #默认为天
print(datetime.datetime.now() - datetime.timedelta(hours=1)) #minutes / seconds
2018-05-08 17:27:37.121000
2018-05-07 16:27:37.121000
时间替换
import datetime
t1 = datetime.datetime.now()
t1.replace(year = 2012,month = 1 ,day = 1)
datetime.datetime(2012, 1, 1, 17, 31, 10, 766000)