「生活可以更简单, 欢迎来到我的开源世界」
  1. strptime 的使用
  2. 获取凌晨时间
  3. 格式化时间比大小
  4. 月,日只取整数
  5. 获取昨天,明天等时间
  6. 时间戳格式化时间
  7. 格式化特殊时间字符串 “2020-10-16T17:36:00+08:00”
  8. 时间戳还原成datetime对象
(转载)Python 时间操作
2021-03-01

原文:Python 时间操作

strptime 的使用

strptime是python datetime库中的函数,用于将一个日期字符串转成datetime日期格式便于后期处理

使用格式datetime.strptime(date_string, format)

format 有以下格式:

img

获取凌晨时间

网上查的大部分都是用时间戳相减,或者用时区的方式,总感觉不是很好

# 方法一 获取凌晨时间戳
import time
import datetime

# 思路特别简单
dt = time.strftime("%Y-%m-%d")
print(dt) # 先得到前缀 2019-12-13 这种,然后在拼接成2019-12-13 00:00:00
time_array = time.strptime(f"{dt} 00:00:00", "%Y-%m-%d %H:%M:%S")
# 然后转化为时间戳,思路特别简单
timestamp = time.mktime(time_array)
print(int(timestamp) * 1000)


# 方法二 刚搜出来的,感觉不错
day_time = time.mktime(datetime.date.today().timetuple())
print(int(day_time) * 1000)

格式化时间比大小

import datetime

d1 = datetime.datetime.strptime('2020-01-05 18:22:22', '%Y-%m-%d %H:%M:%S')
d2 = datetime.datetime.strptime('2020-01-01 12:24:15', '%Y-%m-%d %H:%M:%S')
# 判断大小
print(d2 > d1) # False
print(d2 < d1) # True
# 计算间隔天数
delta = d1 - d2
print(delta.days) # 输出 4

月,日只取整数

import time

dt = time.strftime("%Y-%m-%d")
print(dt) # 输出 2020-05-05

# 但是我只想要 2020-5-5这样的格式, %后母加- 如 %-m %-d
dt = time.strftime("%Y-%-m-%-d")
print(dt) # 输出 2020-5-5

获取昨天,明天等时间

# 当前参考时间为 2020/4/27
from datetime import timedelta, date
# 获取昨日时间对象
yesterday_obj = date.today() + timedelta(days=-1)
print(yesterday_obj) # 输出昨日凌晨对象 class: datetime.date(2020, 4, 26)

# 获取昨天时间格式
yesterday_str = (date.today() + timedelta(days=-1)).strftime("%Y-%m-%d %H:%M:%S")
print(yesterday_str) # 输出昨日凌晨时间 str:'2020-04-26 00:00:00'

# 获取前天 直接days=-2


# 获取明日时间对象
tomorrow_obj = date.today() + timedelta(days=+1)
print(tomorrow_obj) # 输出明日时间对象 class: datetime.date(2020, 4, 28)

# 获取民日时间格式化字符串
tomorrow_str = (date.today() + timedelta(days=+1)).strftime("%Y-%m-%d %H:%M:%S")
print(tomorrow_str) # 输出明日凌晨时间 str:'2020-04-28 00:00:00'

时间戳格式化时间

import time

time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(1605781931))
# 输出 '2020-11-19 18:32:11'

格式化特殊时间字符串 “2020-10-16T17:36:00+08:00”

import datetime
t = "2020-10-16T17:36:00+08:00"

new_t = datetime.datetime.strptime(t,"%Y-%m-%dT%H:%M:%S+08:00").strftime("%Y-%m-%d %H:%M:%S")
# '2020-10-16 17:36:00'


t2 = "2020-10-16T17:36:00Z"
new_t2 = datetime.datetime.strptime(t2,"%Y-%m-%dT%H:%M:%SZ").strftime("%Y-%m-%d %H:%M:%S")
# '2020-10-16 17:36:00'

时间戳还原成datetime对象

from datetime import datetime

ts = 1608902287.504388

d = datetime.fromtimestamp(t)
# datetime.datetime(2020, 12, 25, 21, 18, 7, 504388)

发现其他博客也介绍的很详细,留下链接以便日后查看

<⇧>