在处理时间序列时,经常会有日期计算,现整理常见日期计算的方法,防止遗忘。
- 今天 today = datetime.date.today(),
- 昨天 yesterday = today - datetime.timedelta(days=1)
- 上个月 last_month = today.month - 1 if today.month - 1 else 12
- 当前时间戳 time_stamp = time.time()
- 时间戳转datetime datetime.datetime.fromtimestamp(time_stamp)
- datetime转时间戳 int(time.mktime(today.timetuple()))
- datetime转字符串 today_str = today.strftime("%Y-%m-%d")
- 字符串转datetime today = datetime.datetime.strptime(today_str, "%Y-%m-%d")
- 补时差 today + datetime.timedelta(hours=8)
- 格式化时间戳为本地的时间 time.localtime(time_stamp)
举例:
将字符串格式转成日期格式,并按照一定格式输出:
# coding:utf-8
import datetime
import time
today = '2019-12-3'
# strptime将字符串格式转成日期格式
date = datetime.datetime.strptime(today, '%Y-%m-%d')
print(date)
计算前一天的日期:
# 计算前一天,这里的计算结果是datetime.datetime格式
yesterday = date - datetime.timedelta(days=1)
print(yesterday)
将日期格式转成字符串:
# strftime将日期格式转成字符串格式
yesterday = yesterday.strftime('%Y-%m-%d')
print(yesterday)
计算后一天:
# 计算后一天
tomorrow = date + datetime.timedelta(days=1)
print(tomorrow)
# strftime将日期格式转成字符串格式
tomorrow = tomorrow.strftime('%m-%d')
print(tomorrow)
获取今天日期:
# 今天
today = datetime.date.today()
print(today)
计算两个时间的时差:
start = datetime.datetime.now()
print(start)
time.sleep(5)
end = datetime.datetime.now()
print((end - start).seconds) # 相差秒数
print((end - start).days) # 相差天数
获取上个月月份:
# 上个月
last_month = today.month - 1 if today.month - 1 else 12
print(last_month)
获取当前时间戳,且输出格式为“YYYY年MM月DD日”:
# 当前时间戳
time_stamp = time.time()
print(time_stamp)
print(type(time_stamp))
cc = time.localtime(time_stamp)
print(cc)
print(str(cc.tm_year)+'年'+str(cc.tm_mon)+'月'+str(cc.tm_mday)+'日')
float类型的时间戳转日期型:
# 时间戳转datetime
date_time = datetime.datetime.fromtimestamp(time_stamp)
print(date_time)
print(type(date_time))
日期型转float类型时间戳:
# datetime转时间戳
int(time.mktime(today.timetuple()))
补时差:
# 补时差
date = date_time + datetime.timedelta(hours=10)
print(date)
print(type(date))
经常遇到的场景大概是这几个,后续再遇到继续补充。