【AI】【數(shù)據(jù)處理】時(shí)序數(shù)據(jù)處理基礎(chǔ)模塊——datetime詳解
1. 獲取datetime對(duì)象
- 獲取當(dāng)前datetime對(duì)象
-
方法:
datetime.now(cls, tz=None) -> datetime -
參數(shù)說明:
tz:時(shí)區(qū)信息,不傳該參數(shù)時(shí),默認(rèn)使用當(dāng)?shù)貢r(shí)區(qū)
-
示例代碼:
now = datetime.now()
print(now) # 2023-01-05 09:38:43.084062
print(type(now)) # datetime.datetime
如果需要指定tz時(shí)區(qū),可以通過pytz.timezone來指定,需要提供時(shí)區(qū)標(biāo)識(shí)符,時(shí)區(qū)標(biāo)識(shí)符可在"\Lib\site-packages\pytz\zoneinfo"文件夾下查看
- 示例代碼:
import pytz
from datetime import datetime
dt_mexico = datetime.now(pytz.timezone('America/Mexico_City'))
print(dt_mexico) # 2023-01-04 20:18:46.943553-06:00
dt_shanghai = datetime.now(pytz.timezone('Asia/Shanghai')) # 上海和北京同屬于東八區(qū),因此可以用“Asia/Shanghai”來作為東八區(qū)的標(biāo)識(shí)符
print(dt_shanghai) # 2023-01-05 10:18:46.943553+08:00
- 獲取當(dāng)前utc datetime對(duì)象
-
方法:
datetime.utcnow(cls) -> datetime -
示例代碼:
from datetime import datetime
china_time = datetime.now()
utc_time = datetime.utcnow()
print(china_time) # 2023-01-05 10:30:26.716563
print(utc_time) # 2023-01-05 02:30:26.716563
北京屬于東八區(qū),比utc時(shí)間早8小時(shí),即我們?cè)缟鲜c(diǎn)半的時(shí)候,正是utc時(shí)區(qū)中的凌晨兩點(diǎn)半。
- 自定義datetime對(duì)象
2. datetime,str,timestamp相互轉(zhuǎn)換
2.1 str 轉(zhuǎn) datetime 和 timestamp
- str轉(zhuǎn)datetime
-
方法:
datetime.strptime(_date_string, _format) -> datetime -
參數(shù)說明:
- _date_string:時(shí)間字符串
- _format:時(shí)間解析格式
-
示例代碼:
from datetime import datetime
beijing_time_str = "2023-01-05 11:45:33"
datetime_beijing = datetime.strptime(beijing_time_str, "%Y-%m-%d %H:%M:%S")
print(type(datetime_beijing)) # <class 'datetime.datetime'>
print(datetime_beijing) # 2023-01-05 11:45:33
- str轉(zhuǎn)timestamp
。。。。。。
2.2 datetime 轉(zhuǎn) str 和 timestamp
- datetime對(duì)象 轉(zhuǎn) str
- 方法:
datetime.strftime(format) -> str - 示例代碼:
from datetime import datetime
now = datetime.now()
now_str = now.strftime("%Y-%m-%d %H:%M:%S")
print(type(now_str)) # <class 'str'>
print(now_str) # 2023-01-05 12:09:04
- datetime對(duì)象 轉(zhuǎn) timestamp
- 方法:
datetime.timestampe() -> float - 示例代碼
from datetime import datetime
now = datetime.now()
timestamp = now.timestamp()
print(type(timestamp)) # <class 'float'>
print(timestamp) # 1672900754.798144
2.3 timestamp 轉(zhuǎn) datetime對(duì)象 和 str
- timestamp 轉(zhuǎn) datetime
- 方法
datetime.fromstamp(timestamp, tz=None) -> datetime
- 示例代碼
from datetime import datetime
timestamp = 1672899623
now = datetime.fromtimestamp(timestamp)
print(now) # 2023-01-05 14:20:23
print(type(now)) # <class 'datetime.datetime'>
- timestamp 轉(zhuǎn) utc datetime對(duì)象
- 方法
datetime.utcfromstamp(timestamp, tz=None) -> datetime
- 示例代碼
from datetime import datetime
timestamp = 1672899623
now = datetime.utcfromtimestamp(timestamp)
print(now) # 2023-01-05 06:20:23
print(type(now)) # <class 'datetime.datetime'>
3. datetime實(shí)例方法
datetime.timestampe() -> float
- 示例代碼
from datetime import datetime
now = datetime.now()
timestamp = now.timestamp()
print(type(timestamp)) # <class 'float'>
print(timestamp) # 1672900754.798144
datetime.timetuple() -> time.struct_time
- 示例代碼
from datetime import datetime
now = datetime.now()
timetuple = now.timetuple()
print(type(timetuple)) # <class 'time.struct_time'>
print(timetuple) # time.struct_time(tm_year=2023, tm_mon=1, tm_mday=5, tm_hour=14, tm_min=44, tm_sec=3, tm_wday=3, tm_yday=5, tm_isdst=-1)
datetime.replace(year=None, month=None, day=None, hour=None, minute=None, second=None, microsecond=None, tzinfo=True, *, fold=None) -> datetime
- 示例代碼
>>> from datetime import datetime
>>> now = datetime.now()
>>> now
datetime.datetime(2023, 1, 5, 14, 56, 10, 892657)
>>> now.replace(year=2022)
datetime.datetime(2022, 1, 5, 14, 56, 10, 892657)
4. datetime類方法
1.datetime.fromisocalendar(year, week, day) -> datetime
-
功能說明
從國際標(biāo)準(zhǔn)化日歷中獲得相應(yīng)的datetime對(duì)象
-
示例代碼
>>> datetime.fromisocalendar(2023, 1, 1)
datetime.datetime(2023, 1, 2, 0, 0) # 2023年中第1個(gè)星期的第1天是1月2號(hào)
datetime.fromisoformat(date_string) -> datetime
-
功能說明
將符合isoformat時(shí)間格式的字符串轉(zhuǎn)為datetime對(duì)象。
isoformat指的是符合國際標(biāo)準(zhǔn)ISO8601的日期和時(shí)間表示方式。該標(biāo)準(zhǔn)旨在提供一套沒有歧義的表示格式,并具有以下規(guī)則:
- Year first, followed by month, then the day, each separated by a hyphen ("-")(按年月日的順序先后排列,并以'-'進(jìn)行分隔)
- Numbers less than 10 preceded by a leading zero(小于10的數(shù)字前面加0)
-
示例代碼
>>> from datetime import datetime
>>> datetime.fromisoformat("2022-01-05")
datetime.datetime(2022, 1, 5, 0, 0)
>>> datetime.fromisoformat("2022-01-05 15:24:23")
datetime.datetime(2022, 1, 5, 15, 24, 23)
>>> datetime.fromisoformat("2022-01-05T15:24:23")
datetime.datetime(2022, 1, 5, 15, 24, 23)
>>> datetime.fromisoformat("2022-01-05T15:24:23.434")
datetime.datetime(2022, 1, 5, 15, 24, 23, 434000)

浙公網(wǎng)安備 33010602011771號(hào)