Python datetime时间日期处理
2019-08-06 本文已影响5人
Rethink
Python v3.7.0
import datetime
datetime模块定义了5个类,分别是:
- datetime.date:表示日期的类
- datetime.datetime:表示日期时间的类
- datetime.time:表示时间的类
- datetime.timedelta:表示时间间隔,即两个时间点的间隔
- datetime.tzinfo:时区的相关信息
datetime.date 表示日期的类
- 实例化
someday = datetime.date(year=2019, month=7, day=14) # 任何一天
today = datetime.date.today() # 今天
print(someday, today) # 默认格式:%Y-%m-%d
- 指定日期格式
print(today.strftime('%Y/%m/%d')) # str, 2019/07/12
print(today.ctime()) # Fri Jul 12 00:00:00 2019
print(today.weekday()) # 返回0-6,代表周一到周日,其中周一返回0
print(today.isoformat()) # 2019-07-12
print(today.isocalendar()) # (2019, 28, 5)
print(someday.isoweekday()) # 返回的1-7代表周一至周日
- 根据指定时间戳返回一个datetime.date对象
ts = datetime.date.fromtimestamp(1562677551)
print(ts, type(ts))
- 替换给定日期,但不改变原日期
n = today.replace(year=2000, month=1, day=1) # 2019-07-01
print(today, n)
- 返回日期对应的time, struct_time对象
tm = today.timetuple()
print(tm[0], type(tm)) # 索引取值
datetime.time 表示时间的类
sometime = datetime.time(hour=21, minute=11, second=55, microsecond=200) # 任何时间
print(sometime, type(sometime)) # 21:11:55.000200
# 指定时间格式
print(sometime.strftime('%H%M%S')) # 211155
# 替换给定时间,但不改变原时间
n = sometime.replace(hour=20)
print(sometime, n)
print(sometime.tzname()) # 返回时区名字
print(sometime.utcoffset()) # 返回时区的时间偏移量
datetime.datetime 表示日期时间的类
moment = datetime.datetime(year=2100, month=10, day=1, hour=1, minute=1, second=1, microsecond=1)
now = datetime.datetime.now()
print(moment, now)
# 指定格式
print(now.strftime('%Y%m%d_%H%M%S')) # 日期格式转换为字符串格式
print(datetime.datetime.strptime('20190712_152706', '%Y%m%d_%H%M%S')) # 由字符串格式转化为日期格式
print(now.date()) # 返回当前日期时间的日期部分
print(now.time()) # 返回当前日期时间的时间部分
# 根据指定时间戳返回一个datetime.datetime对象
st = datetime.datetime.fromtimestamp(1562677551)
print('当前时间为:%s' % st)
# 日期替换
n = now.replace(hour=20)
print(now, n)
datetime.timedelta 表示时间间隔的类
t1 = datetime.datetime(2016, 10, 20)
t2 = datetime.datetime(2015, 11, 2)
delta = t2 - t1
print(delta, type(delta)) # -353 days, 0:00:00 <class 'datetime.timedelta'>
# 计算两个日期之间的天数/秒数差值
print(abs(delta.days)) # 353
print(delta.total_seconds()) # -30499200.0 推荐使用此方法