安裝
pip install arrow
使用
獲取當前時間
返回的是Arrow物件
arrow.now()
# 2022-05-06T09:32:41.296610+08:00
arrow.utcnow()
# 2022-05-06T01:50:44.670980+00:00
獲取當前時間戳
arrow.now().timestamp
# 1651800761
arrow.now().float_timestamp
# 1651800761.29661
獲取datetime屬性值
獲取當前時間的年、月、日、時、分、秒
now = arrow.now() # 2022-05-06T09:32:41.296610+08:00
now.year # 2022
now.month # 5
now.day # 6
now.hour # 9
now.minute # 32
now.second # 41
將arrow物件轉為字串
將arrow物件轉為字串格式化輸出
now = arrow.now() # 2022-05-06T09:32:41.296610+08:00
now.format() # '2022-05-06 09:32:41+08:00'
now.format('YYYY-MM-DD HH:mm:ss ZZ') # '2022-05-06 09:32:41 +08:00'
now.format('YYYY-MM-DD HH:mm:ss') # '2022-05-06 09:32:41'
now.format('YYYYMMDD') # '20220506'
now.format('X') # '1651800761' 字串格式的時間戳
now.format('MMMM') # 'May' 英文的月份
將時間戳轉化為arrow物件
arrow.get(1651800761) # 2022-05-06T01:32:41+00:00
# 轉換為字串
arrow.get(1651800761).format('YYYY-MM-DD HH:mm:ss') # '2022-05-06 09:32:41'
從字串中獲取時間
日期和時間格式的任一側都可以用以下列表中的一個標點符號分隔:,.;:?!"\
‘[]{}()<>`
arrow.get("Cool date: 2019-10-31T09:12:45.123456+04:30.", "YYYY-MM-DDTHH:mm:ss.SZZ") # <Arrow [2019-10-31T09:12:45.123456+04:30]>
arrow.get("Tomorrow (2019-10-31) is Halloween!", "YYYY-MM-DD") # <Arrow [2019-10-31T00:00:00+00:00]>
arrow.get("Halloween is on 2019.10.31.", "YYYY.MM.DD") # <Arrow [2019-10-31T00:00:00+00:00]>
# 錯誤示例
arrow.get("It's Halloween tomorrow (2019-10-31)!", "YYYY-MM-DD") # 引發異常,因為日期後面有多個標點符號
字串轉換為時間戳
arrow.get("2022-05-01").int_timestamp # 1651363200
arrow.get("2022-05-01").float_timestamp # 1651363200.0
arrow.get("2022-05-01").timestamp() # 1651363200.0
arrow物件轉換為datetime物件
arrow.now().datetime # 2022-05-06 09:32:41.296610+08:00
時間偏移
shift()
now = arrow.now() # 2022-05-06T09:32:41.296610+08:00
# 後3天
now.shift(days=3).format('YYYY:MM:DD HH:mm:ss') # '2022:05:09 09:32:41'
# 前2天
now.shift(days=-2).format('YYYY:MM:DD HH:mm:ss') # '2022:05:04 09:32:41'
# 上1年
now.shift(years=-1).format('YYYY:MM:DD HH:mm:ss') # '2021:05:04 09:32:41'
# 下2個月
now.shift(months=2).format('YYYY:MM:DD HH:mm:ss') # '2022:07:06 09:32:41'
# 2小時後
now.shift(hours=2).format('YYYY:MM:DD HH:mm:ss') # '2022:05:06 11:32:41'
# 1分鐘前
now.shift(minutes=-1).format('YYYY:MM:DD HH:mm:ss') # '2022:05:06 09:34:41'
# 30秒前
now.shift(seconds=-30).format('YYYY:MM:DD HH:mm:ss') # '2022:05:06 09:34:11'
也可以多個引數同時使用
# 30秒前
now.shift(hours=2, minutes=-1, seconds=-30).format('YYYY:MM:DD HH:mm:ss')
其它方法
humanize() 人性化輸出
本地化、人性化表示返回相對時間差異
now = arrow.now()
now.humanize() # '26 seconds ago'
now.humanize(locale='zh-cn') # ‘26秒前’
now = arrow.now()
future = now.shift(hours=2)
future.humanize(now, locale='zh-cn') # '2小時後'
span() 獲取任何單位的時間跨度
now.span('hour') # (<Arrow [2022-05-06T15:00:00+08:00]>, <Arrow [2022-05-06T15:59:59.999999+08:00]>)
floor() # 時間所在區間的開始
now.floor('hour') # <Arrow [2022-05-06T15:00:00+08:00]>
ceil() # 時間所在區間的結尾
now.ceil('hour') # <Arrow [2022-05-06T15:59:59.999999+08:00]>
原始碼解析
以下列舉一些庫中重要的檔案及關鍵的方法,目前安裝的是Arrow1.2.2版本
Python基礎庫
在arrow.py檔案中,匯入了calendar、datetime、time、dateutil時間處理庫
本作品採用《CC 協議》,轉載必須註明作者和本文連結