说明:
绿色线条:timestamp -> datetime对象路径
橙色线条:datetime对象 -> timestamp路径
灰色线条:time模块 与 datetime模块 分界过渡
时间的四个存在方式
- 时间戳,float
- 元组形式, struct_time
- 字符串形式,str
- 时间对象 datetime, date, time
格式化
年-月-日 时:分:秒.毫秒 %Y-%m-%d %H:%M:%S.%f
代码实例
导入模块
# -*- coding:utf-8 -*- import time from datetime import datetime from datetime import date from datetime import timedelta
一、时间的获取
# 1、获取当前时间的时间戳 t = time.time() # <type 'float'>, 1525687472.870682 # 2、获取当前时间元组 t = time.localtime() # <type 'time.struct_time'>, # time.struct_time(tm_year=2018, tm_mon=5, tm_mday=7, tm_hour=18, # tm_min=5, tm_sec=47, tm_wday=0, tm_yday=127, tm_isdst=0)) # 3、获取当前时间的字符串 # 本地时间 t1 = datetime.now().strftime("%Y-%m-%d %H:%M:%S") t2 = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) # utc时间:就是0时区的区时,比北京时间晚8小时 t3 = datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S") t4 = time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) """ <type 'str'>, '2018-05-07 18:03:38' <type 'str'>, '2018-05-07 18:03:38' <type 'str'>, '2018-05-07 10:03:38' <type 'str'>, '2018-05-07 10:03:38' """ # 4、获取时间对象 # 获取当前日期和时间 datetime t = datetime.now() # (<type 'datetime.datetime'>, # datetime.datetime(2018, 5, 7, 18, 10, 13, 538265)) # 获取当前日期 date t1 = datetime.now().date() # (<type 'datetime.date'>, datetime.date(2018, 5, 7)) # 获取当前时间 time t2 = datetime.now().time() # (<type 'datetime.time'>, datetime.time(18, 11, 4, 939271))
二、时间的计算
t = datetime.now() - timedelta(days=3)
三、时间形式之间的转换
# 1、时间戳与时间元组 # 时间戳 -> 时间元组: t = time.localtime(1525681106.08) # 时间元组 -> 时间戳 t = time.mktime(time.localtime()) # 2、时间元组与字符串 # 时间元组 -> 字符串 t = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) # 字符串 -> 时间元组 t = time.strptime("2018-01-07 17:26:24","%Y-%m-%d %H:%M:%S") # 3、时间戳与字符串 # 时间戳 -> 字符串 t = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(1525681106.08)) t = datetime.fromtimestamp(1525681106.08).strftime("%Y-%m-%d %H:%M:%S") # 字符串 -> 时间戳: t = time.mktime(time.strptime("2018-01-07 17:26:24","%Y-%m-%d %H:%M:%S")) # 4、时间戳与datetime对象 # 时间戳 -> datetime对象 t = datetime.fromtimestamp(1525681106.08) # UTC t = datetime.utcfromtimestamp(1525681106.08) # datetime对象 -> 时间戳 t = time.mktime(datetime.now().timetuple()) # 不过要注意的是time是从1900开始计算的。而datetime包含1-9999的范围 t = datetime.now().timestamp() # 5、时间元组与datetime对象 # 时间元组对象 -> datetime对象 t = datetime.fromtimestamp(time.mktime(time.localtime())) # datetime对象 -> 时间元组对象 t = datetime.now().timetuple() # 6、字符串与datetime对象 # str字符串 -> datetime对象 t = datetime.strptime("2018-01-07 17:26:24", "%Y-%m-%d %H:%M:%S") # datetime对象 -> str字符串 t = datetime.now().strftime("%Y-%m-%d %H:%M:%S") # 7、datetime, data, time 对象之间转换 # datetime对象 -> date对象 t1 = datetime.now().date() # datetime对象 -> time对象 t2 = datetime.now().time() # date对象 + time对象 -> datetime对象 t = datetime.combine(t1, t2) # <type 'datetime.datetime'> # 8、date对象与时间戳 # 时间戳 -> date对象 t = date.fromtimestamp(time.time())
参考:
- 之前写过的time模块 Python编程:time时间模块
- time,datetime中字符串,时间对象,和时间戳的转换学习整理