【一】python中表示时间的三种方式
import time
res = time. time( )
print ( res, type ( res) )
res = time. strftime( '%Y-%m-%d %X' )
print ( res, type ( res) )
res = time. struct_time( '%Y-%m-%d %X' )
print ( res, type ( res) )
【二】time
(1)时间戳(计算机能够识别的时间)
Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。 时间戳在线转换网址:时间戳(Unix timestamp)转换工具
import time
res = time. time( )
print ( res, type ( res) )
res = time. gmtime( time. time( ) )
print ( res, type ( res) )
res = time. localtime( time. time( ) )
print ( res, type ( res) )
(2)格式化的时间字符串(人能够看懂的时间)
import time
res = time. strftime( "%Y-%m-%d" )
print ( res, type ( res) )
res = time. strftime( "%x %X" )
print ( res, type ( res) )
符号 含义 %y 两位数 年份 %Y 四位数 年份 %m 两位数 月份 %d 两位数 日期 %H 24小时制 小时 %l 12小时制 小时 %M 分钟 %S 秒 %a 缩写英语 星期 %A 全拼英语 星期 %b 缩写英语 月份 %B 全拼英语 月份 %c Wed Dec 20 15:34:36 2023 %j 年内第几天 %p PM/AM %U 星期天开始 年内第几个周 %w 星期天开始 月内第几个周 %W 星期一开始 年内第几个周 %x 12/20/23 月/日/年 %X 15:40:22 时:分:秒 %Z 中国标准时间 当前时区的名称
(3)时间元组(结构化时间)(用来操作的时间)
import time
res = time. localtime( )
print ( res, type ( res) )
print ( res. tm_min, type ( res. tm_min) )
print ( res[ 0 ] , type ( res[ 0 ] ) )
索引(Index) 属性(Attribute) 值(Values) 0 tm_year(年) 2023 1 tm_mon(月) 1 - 12 2 tm_mday(日) 1 - 31 3 tm_hour(时) 0 - 23 4 tm_min(分) 0 - 59 5 tm_sec(秒) 0 - 60 6 tm_wday(weekday) 0 - 6(0表示周一) 7 tm_yday(一年中的第几天) 1 - 366 8 tm_isdst(是否是夏令时) 默认为0
(4)三种时间之间的转换方式
import time
res_tuple = time. strptime( "2023-12-30" , "%Y-%m-%d" )
print ( res_tuple, type ( res_tuple) )
res = time. strftime( "%Y-%m%d" , res_tuple)
print ( res, type ( res) )
res = time. asctime( res_tuple)
print ( res, type ( res) )
import time
res = time. gmtime( time. time( ) )
print ( res, type ( res) )
res = time. localtime( time. time( ) )
print ( res, type ( res) )
res = time. mktime( res)
print ( res, type ( res) )
import time
res = time. ctime( time. time( ) )
print ( res, type ( res) )
【三】datetime
【1】自定义日期并格式化
import datetime
res = datetime. date( 2012 , 12 , 21 )
print ( res, type ( res) )
【2】获取本地时间
(1)年月日
import datetime
res = datetime. date. today( )
print ( res, type ( res) )
print ( res. year, type ( res. year) )
print ( res. weekday( ) , type ( res. weekday( ) ) )
print ( res. isoweekday( ) , type ( res. isoweekday( ) ) )
(2)年月日时分秒
datetime.datetime.today() 不支持传递时区参数 datetime.datetime.now() 支持传递时区参数
datetime.datetime.now(datetime.timezone.utc) 北京时间 datetime.datetime.utcnow() 北京时间
import datetime
res = datetime. datetime. today( )
print ( res, type ( res) )
print ( res. year, type ( res. year) )
print ( res. weekday( ) , type ( res. weekday( ) ) )
print ( res. isoweekday( ) , type ( res. isoweekday( ) ) )
【3】时间差
(1)生成时间差
import datetime
day_delta = datetime. timedelta( weeks= 2 , days= 2 )
print ( day_delta, type ( day_delta) )
(2)推迟时间
import datetime
day_delta = datetime. timedelta( weeks= 2 , days= 2 )
today = datetime. datetime. today( )
print ( f"今天日期: { today} " )
print ( f"16天后的日期: { today + day_delta} " )
print ( f"16天前的日期: { today - day_delta} " )
(3)时间差对象和时间日期对象的关系
时间差对象 = 时间日期对象 - 时间日期对象 时间日期对象 = 时间日期对象 ± 时间差对象
import datetime
day_delta = datetime. timedelta( days= 1 )
day_today = datetime. datetime. today( )
day_last = day_today - day_delta
print ( day_last, type ( day_last) )
day_future = day_today + day_delta
print ( day_future, type ( day_future) )
day_delta_new = day_future - day_last
print ( day_delta_new, type ( day_delta_new) )
(4)应用
import datetime
def cal_birthday ( month= 1 , day= 1 ) :
today_info = datetime. datetime. today( )
future_birthday = datetime. datetime( today_info. year, month, day)
day_delta = future_birthday - today_info
if day_delta. days < 0 :
future_birthday = datetime. datetime( today_info. year + 1 , month, day)
day_delta = future_birthday - today_info
return day_delta
res = cal_birthday( 11 , 21 )
print ( f"还有 { res. days} 天 { round ( res. seconds / 3600 ) } 小时,你就过生日了" )