python常用时间转换(datetime 库)


导入 datetime 库

获取当前时间

# 获取当前时间
day1 = datetime.datetime.now()
# 获取当前日期
day2 = datetime.date.today()

# 获取时间秒的方法,截取时候需要注意当前时间类型str/datetime.datetime
day3 = datetime.datetime.strftime(day1, '%Y-%m-%d %H:%M:%S').split(' ')[1]
day4 = datetime.datetime.time(day1)

print('now', day1)
print('today', day2)
print('day3', day3)
print('day4', day4)

结果输出:
now 2021-10-30 14:03:16.802193
today 2021-10-30
day3 14:03:16
day4 14:03:16.802193

 

一、字符串转时间(strptime),时间转字符串(strftime)

1)字符串转时间(strptime)

1 date = "2021-04-01 00:00:00"
2 
3 dates = datetime.datetime.strptime(date, '%Y-%m-%d %H:%M:%S')

输出结果:

2021-04-01 00:00:00 <class 'datetime.datetime'>

 

2)时间转字符串(strftime)

times = datetime.datetime.strftime(dates, '%Y-%m-%d %H:%M:%S')

print(times,type(times))

输出结果:

2021-04-01 00:00:00 <class 'str'>

 

二、时间转时间戳

 1 import datetime
 2 
 3 # 方法一:字符串转时间戳
 4 date = "2021-04-01 00:00:00"
 5 datetime_stamp = datetime.datetime.timestamp(datetime.datetime.strptime(date, '%Y-%m-%d %H:%M:%S'))
 6 print('timestamp1',datetime_stamp, int(datetime_stamp * 1000))
 7 
 8 # 方法二:datetime类型转时间戳
 9 day1 = datetime.datetime.now()
10 datetime_stamp = datetime.datetime.timestamp(day1)
11 print('timestamp2',datetime_stamp, int(datetime_stamp * 1000))
12 
13 
14 结果输出:
15 timestamp1 1617206400.0 1617206400000
16 timestamp2 1635575050.520314 1635575050520

 

三、时间戳转时间

注意:必须10位时间戳才能进行转换

import datetime

strT = 1635575731642/1000
datetime_str2 = datetime.datetime.strftime(datetime.datetime.fromtimestamp(strT), '%Y-%m-%d %H:%M:%S')
print('datetime_str2', datetime_str2,type(datetime_str2))

datetime_str3 = datetime.datetime.fromtimestamp(strT)
print('datetime_str3',datetime_str3,type(datetime_str3))


输出结果:
datetime_str2 2021-10-30 14:35:31 <class 'str'>
datetime_str3 2021-10-30 14:35:31.642000 <class 'datetime.datetime'>

 

四、时间对比

注意:必须相同类型才能进行比较

1)字符串相互比较

date = "2021-04-01 01:00:00"

if date > "2021-04-01 00:00:00":
    print('True1',date.split(' ')[1],type(date.split(' ')[1]))

if date.split(' ')[1] > "00:00:00":
    print('True2',date.split(' ')[1],type(date.split(' ')[1]))

输出结果:
True1 01:00:00 <class 'str'>
True2 01:00:00 <class 'str'>

.

2)当类型不一致时,编译器会进行警示和执行后报错

 

 

 类型输出:当前 2021-10-30 15:01:50.133857 <class 'datetime.datetime'> <class 'str'>

 

 

 

date = "2021-04-01 01:00:00"
nowTimes = datetime.datetime.now() #15:10:10.993629
print('时间编译',type(datetime.datetime.time(nowTimes)),datetime.datetime.time(nowTimes),'|',datetime.datetime.time(datetime.datetime.strptime(date.split(' ')[1],'%H:%M:%S')),type(date))

结果输出:
时间编译 <class 'datetime.time'> 15:07:00.502935 | 01:00:00 <class 'str'>

if datetime.datetime.time(nowTimes) > datetime.datetime.time(datetime.datetime.strptime(date.split(' ')[1],'%H:%M:%S')):
    print('True',datetime.datetime.time(nowTimes) ,'|', datetime.datetime.time(datetime.datetime.strptime(date.split(' ')[1],'%H:%M:%S')))
else:
    print('False',datetime.datetime.time(nowTimes) ,'|', datetime.datetime.time(datetime.datetime.strptime(date.split(' ')[1],'%H:%M:%S')))


结果输出:
True 15:10:10.993629 | 01:00:00

当
date = "2021-04-01 17:00:00"
结果输出:
False 15:13:11.753158 | 17:00:00

 

 

五、时间常用加减

注意:只有datetime类型才可以进行时间的加减

(datetime.timedelta可使用类型:weeks,days,hours,minutes,seconds...)

1 nowTimes = datetime.datetime.now() 
2 print('当前时间',nowTimes,type(nowTimes))
3 timeCompute= nowTimes + datetime.timedelta(days=1)
4 print('计算后',timeCompute)
5 
6 输出结果:
7 当前时间 2021-10-30 15:19:25.043502 <class 'datetime.datetime'>
8 计算后 2021-10-31 15:19:25.043502

 

当类型不一致时,编译器会进行警示和执行后报错

 

输出结果:

当前时间 2021-04-01 17:00:00 <class 'str'> 1 day, 0:00:00 <class 'datetime.timedelta'>

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM