日期时间格式的转换

1
2
from datetime import date,timedelta,datetime,time
import time

datetime 时间格式及转化

  1. 获取方式 datetime 模块
  2. 转化成字符串 x.strftime(format)
    • x : 要转化的datetime时间
    • format : 转换成的字符串格式 如:%Y%m%d ,%Y-%m-%d ,%Y/%m/%d
  3. 转化成时间戳
    • 需要导入 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

  • datetime.strptime 方法
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)以来的秒数

  1. 生成方法
    • time模块
    • time.time() 生成当前时间的时间戳
    • 时间戳的数据类型是浮点数
  2. 转换成str 格式的时间
    • 分两步操作,先将时间戳转换成时间元组,然后转换
      • time.localtime(a) a : 要转换的时间戳
    • time.strftime(“%Y-%m-%d”,time.localtime(a))
      • a : 要转换的时间戳
  3. 转换成datetime
    • 转换成日期和时间 datetime.fromtimestamp(a)
      • 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

  1. 转换成datetime
    • datetime.fromtimestamp(a)
  2. 转换成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)