1 2
| from datetime import date,timedelta,datetime,time import time
|
datetime
时间格式及转化
- 获取方式
datetime
模块
- 转化成字符串
x.strftime(format)
x
: 要转化的datetime时间
format
: 转换成的字符串格式 如:%Y%m%d
,%Y-%m-%d
,%Y/%m/%d
- 转化成时间戳
- 需要导入
time
模块
time.mktime(x.timetuple())
time.mktime
转换成时间戳的函数
x
: 要转化的datetime时间
timetuple()
将 datetime
转换成时间元组
1 2 3 4 5
| dt1 = date.today() dt2 = datetime.now()
dt1 dt2
|
Output:
datetime.date(2023, 11, 21)
datetime.datetime(2023, 11, 21, 14, 46, 43, 68528)
datetime
to str
1 2 3 4 5
| dt1.strftime("%Y%m%d") dt1.strftime("%Y-%m-%d") dt1.strftime("%Y/%m/%d")
dt2.strftime("%Y-%m-%d")
|
Output:
'20231121'
'2023-11-21'
'2023/11/21'
'2023-11-21'
datetime
to timestamp
1 2 3 4 5
| dt = datetime.now() dt.timetuple() st = time.mktime(dt.timetuple()) st
|
Output:
time.struct_time(tm_year=2023, tm_mon=11, tm_mday=21, tm_hour=14, tm_min=46, tm_sec=43, tm_wday=1, tm_yday=325, tm_isdst=-1)
1700549203.0
timestamp
to datetime
1 2 3 4 5 6
| dt = datetime.now() dt st = time.mktime(dt.timetuple()) st date.fromtimestamp(st)
|
Output:
datetime.datetime(2023, 11, 21, 14, 46, 43, 117266)
1700549203.0
datetime.date(2023, 11, 21)
str
字符串格式的时间及转化
1 2 3
| str1 = '20231111' str2 = '2023-11-11' str3 = '2023/11/11'
|
str
to datetime
1 2 3
| datetime.strptime(str1,'%Y%m%d') datetime.strptime(str2,'%Y-%m-%d') datetime.strptime(str3,'%Y/%m/%d')
|
Output:
datetime.datetime(2023, 11, 11, 0, 0)
datetime.datetime(2023, 11, 11, 0, 0)
datetime.datetime(2023, 11, 11, 0, 0)
dateutil
模块的 parser.parse(string)
方法
1 2 3 4
| from dateutil import parser parser.parse(str1) parser.parse(str2) parser.parse(str3)
|
Output:
datetime.datetime(2023, 11, 11, 0, 0)
datetime.datetime(2023, 11, 11, 0, 0)
datetime.datetime(2023, 11, 11, 0, 0)
pandas
模块的 pd.to_datetime(str1)
方法
1 2 3 4
| import pandas as pd pd.to_datetime(str1) pd.to_datetime(str2) pd.to_datetime(str3)
|
Output:
Timestamp('2023-11-11 00:00:00')
Timestamp('2023-11-11 00:00:00')
Timestamp('2023-11-11 00:00:00')
timestamp
时间戳时间的转换
自1970年1月1日(00:00:00 GMT)以来的秒数
- 生成方法
time
模块
time.time()
生成当前时间的时间戳
- 时间戳的数据类型是浮点数
- 转换成
str
格式的时间
- 分两步操作,先将时间戳转换成时间元组,然后转换
time.localtime(a)
a
: 要转换的时间戳
- time.strftime(“%Y-%m-%d”,
time.localtime(a)
)
- 转换成
datetime
- 转换成日期和时间
datetime.fromtimestamp(a)
- 转换成日期
date.fromtimestamp(int(a))
- 先将时间戳的浮点数转换成整型
int(a)
a
: 要转换的时间戳
1 2 3 4
| a = time.time() a type(a)
|
Output:
1700549203.5535545
float
timestamp
to str
time.strftime("%Y-%m-%d",time.localtime(a))
1 2 3 4
| b = time.localtime(a) b type(b)
|
Output:
time.struct_time(tm_year=2023, tm_mon=11, tm_mday=21, tm_hour=14, tm_min=46, tm_sec=43, tm_wday=1, tm_yday=325, tm_isdst=0)
time.struct_time
1 2 3
| c = time.strftime("%Y-%m-%d",b) c type(c)
|
Output:
'2023-11-21'
str
timestamp
to datetime
- 转换成datetime
datetime.fromtimestamp(a)
- 转换成date
date.fromtimestamp(int(a))
1 2
| datetime.fromtimestamp(a) date.fromtimestamp(int(a))
|
Output:
datetime.datetime(2023, 11, 21, 14, 46, 43, 553555)
datetime.date(2023, 11, 21)