获取日期时间,算是大家经常要用到的操作吧,这里归纳总结一下import datetime的情况下,常用的日期获取、格式化、时间加减的场景,即today、now、strftime、strptime、relativedelta、timedelta等操作
1、获取时间信息today、now
import datetime
today = datetime.date.today()
now = datetime.datetime.now()
# 获取当前日期(datetime)
print(today)
# 获取当前日期时间(datetime)
print(now)
# 单独获取年、月、日、时、分、秒、毫秒
print(now.year, now.month, now.day, now.hour, now.minute, now.second, now.microsecond)
# 输出结果:
# 2022-04-14
# 2022-04-14 15:32:49.186485
# 2022 4 14 15 32 49 186485
2、时间格式化(转字符型)strftime
import datetime
now = datetime.datetime.now()
# 格式化到秒(varchar)
print(now.strftime("%Y-%m-%d %H:%M:%S"))
# 格式化到日(varchar)
print(now.strftime("%Y-%m-%d"))
# 输出结果:
# 2022-04-14 15:32:49
# 2022-04-14
3、字符型转日期型strptime
import datetime
# 字符型日期转日期型(datetime)
print(datetime.datetime.strptime("2022-01-01 00:00:00", "%Y-%m-%d %H:%M:%S"))
print(datetime.datetime.strptime("2022/01/01 00:00:00", "%Y/%m/%d %H:%M:%S"))
# 输出结果:
# 2022-01-01 00:00:00
# 2022-01-01 00:00:00
4、逐个年月日转日期型datetime
import datetime
# 逐个数字转日期型(datetime)
print(datetime.datetime(2022, 2, 1))
print(datetime.date(2022, 2, 1))
# 输出结果:
# 2022-02-01 00:00:00
# 2022-02-01
5、时间加减relativedelta
import datetime
from dateutil.relativedelta import relativedelta
today = datetime.date.today()
# 时间加减years、months、days、hours、minutes
# 用到from dateutil.relativedelta import relativedelta
print(today + relativedelta(years=1))
print(today + relativedelta(months=-1))
print(today + relativedelta(days=1))
print(today + relativedelta(hours=-1))
print(today + relativedelta(minutes=1))
# 输出结果:
# 2023-04-14
# 2022-03-14
# 2022-04-15
# 2022-04-13 23:00:00
# 2022-04-14 00:01:00
6、时间加减timedelta
import datetime
now = datetime.datetime.now()
# 时间加减days、hours、minutes(timedelta无法进行年月加减)
print(now + datetime.timedelta(days=1))
print(now + datetime.timedelta(hours=-1))
print(now + datetime.timedelta(minutes=1))
# 输出结果:
# 2022-04-15 15:37:08.464653
# 2022-04-14 14:37:08.464653
# 2022-04-14 15:38:08.464653
import time的情况,个人用的不多,主要是用于休眠sleep;
或者因为拿到的是时间戳,只用在时间的计算上,比如
import time
# 获取当前时间戳(float)
now = time.time()
print(now)
# 输出结果:
# 1649923137.6823924
while True:
if (time.time() - now) > 5:
print(time.time())
print('连接超时,断开程序')
break
# 输出结果:
# 1649923142.6824458
# 连接超时,断开程序
# 休眠3s
time.sleep(3)