Python中,通常有三种方式来表示时间:
时间戳(timestamp):从1970年1月1日00:00:00,开始按秒计算的偏移量。
print( time.time() ) # 1592383284.6180453
格式化的时间字符串(Format String):
print(time.strftime("%Y-%m-%d %X")) # 2020-06-17 16:41:24
结构化的时间(struct_time):
print( time.localtime() ) # 本地时区 time.struct_time(tm_year=2020, tm_mon=6, tm_mday=17, tm_hour=16, tm_min=41, tm_sec=24, tm_wday=2, tm_yday=169, tm_isdst=0) print( time.gmtime() ) # UTC时区 time.struct_time(tm_year=2020, tm_mon=6, tm_mday=17, tm_hour=8, tm_min=41, tm_sec=24, tm_wday=2, tm_yday=169, tm_isdst=0)
三种方式转换关系:
# 时间戳,转换为 结构化时间 print( time.localtime() ) # time.struct_time(tm_year=2020, tm_mon=6, tm_mday=17, tm_hour=17, tm_min=5, tm_sec=12, tm_wday=2, tm_yday=169, tm_isdst=0) print( time.gmtime() ) # time.struct_time(tm_year=2020, tm_mon=6, tm_mday=17, tm_hour=9, tm_min=5, tm_sec=12, tm_wday=2, tm_yday=169, tm_isdst=0) print( time.localtime(1473525444.037215) ) # 指定,转换的 时间戳 # 结构化时间,转换为 时间戳 print(time.mktime(time.localtime())) # 结构化时间,转换为 格式化时间 print(time.strftime("%Y-%m-%d %X", time.localtime())) # 格式化时间,转换为 结构化时间 print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X'))
# asctime([t]) : 把一个表示时间的元组或者struct_time,表示为这种形式:'Sun Jun 20 23:21:05 1993'。 # 如果没有参数,将会将time.localtime()作为参数传入。 print(time.asctime()) # Wed Jun 17 17:18:15 2020 # ctime([secs]) : 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。
# 如果参数未给或者为None的时候,将会默认time.time()为参数。
# 它的作用相当于time.asctime(time.localtime(secs))。 print(time.ctime()) # Wed Jun 17 17:18:15 2020 print(time.ctime(time.time())) # Wed Jun 17 17:18:15 2020
datetime
print(datetime.datetime.now()) # 2020-06-17 17:25:51.835678 print(datetime.date.fromtimestamp(time.time()) ) # 2020-06-17 print(datetime.datetime.now() + datetime.timedelta(3)) # 当前时间+3天 2020-06-20 17:25:51.836678 print(datetime.datetime.now() + datetime.timedelta(days=-3)) # 当前时间-3天
print(datetime.datetime.now() + datetime.timedelta(days=-1)*3) # 当前时间-3天 print(datetime.datetime.now() + datetime.timedelta(hours=3)) # 当前时间+3小时 print(datetime.datetime.now() + datetime.timedelta(minutes=30)) # 当前时间+30分
# 时间替换
c_time = datetime.datetime.now() # 2020-06-17 17:28:33.258911
print(c_time.replace(minute=3,hour=2)) # 2020-06-17 02:03:33.258911