本文例子用
from datetime import *
关于python的import和名字空间,请参考之前文章:
《Python日期时间datetime库与dateutil库典型示例与详解(1)--datetime库简介&datetime库date类常用例子》
time类只有时/分/秒/毫秒的时间单位,没有日期:
time类并没有today()方法,先生成datetime对象,再用datetime类的time()方法转换为time()对象
Mytime = datetime.today().time()
(1)生成指定日期时间的time对象时4个参数,分别为小时、分、秒、微秒,
Mytime = time (12,12,12,12)
(2)没有必填参数,可不带参数生成,没填视为0
Mytime = time ()
#生成一个00:00:00.000000的time对象
(3)与time类配合一起使用的更多是datetime库tzinfo和timezone类(时区相关),应用中涉及到不同时区时间处理的需要配合使用;
hour = Mytime.hour
minute = Mytime.minute
second = Mytime.second
microsecond = Mytime.microsecond
方法与上述的修改date和datetime对象的各时间单位的数值一样:
Mytime.replace(hour=23,minute =1)
# time对象的各时间单位可以单独和组合修改
也是有三种方法:
(1)str类型转换、
(2)time类的isoformat()
(3)time类的strftime()
用法与datetime对象转换为字符串完全类似
详见系列文章:《Python日期时间datetime库与dateutil库典型示例与详解(2)--datetime库datetime类常用例子》
字符串生成一个指定的time对象有两种途径:
(1)用time类的fromisoformat ()【注意:python3.7版本才有此方法】
更多官方例子:
time.fromisoformat('04:23:01')
datetime.time(4, 23, 1)
time.fromisoformat('T04:23:01')
datetime.time(4, 23, 1)
time.fromisoformat('T042301')
datetime.time(4, 23, 1)
time.fromisoformat('04:23:01.000384')
datetime.time(4, 23, 1, 384)
time.fromisoformat('04:23:01,000')
datetime.time(4, 23, 1, 384)
time.fromisoformat('04:23:01+04:00')
datetime.time(4, 23, 1, tzinfo=datetime.timezone(datetime.timedelta(seconds=14400)))
time.fromisoformat('04:23:01Z')
datetime.time(4, 23, 1, tzinfo=datetime.timezone.utc)
time.fromisoformat('04:23:01+00:00')
datetime.time(4, 23, 1, tzinfo=datetime.timezone.utc)
(2) strptime()方法
time类并没有strptime()方法,但是strptime()灵活度高,适用场景广,我们可以先生成datetime对象,再用datetime类的time()方法转换为time对象,更多的strptime()使用例子,详见系列文章:《Python日期时间datetime库与dateutil库典型示例与详解(2)--datetime库datetime类常用例子》
但与用datetime类strptime()方法生成date对象略有不同,date对象可以直接这样:
Mydate = datetime.strptime("2023-11-16", "%Y-%m-%d").date()
如果我们:
Mytime = datetime.strptime("12:12:12.999", "%H:%M:%S.%f").time()
会报错,因为生成datetime对象时必须要有日期,我们还需要调整.
时间存在一个time_string字符串中,例如中文的时间"21时23分22秒",那我们随便补个字符串去填充下生成datetime对象需要的“年月日”,示例如下:
time_string = "21时23分22秒"
Mytime = datetime.strptime("1-1-1"+time_string,"%Y-%m-%d%H时%M分%S秒").time()