您好,登錄后才能下訂單哦!
對于日期的操作可以說是比較常見的case了,日期與格式化字符串互轉,日期與時間戳互轉,日期的加減操作等,下面主要介紹下常見的需求場景如何實現
1. 基本包引入
主要需要引入時間和日期的處理包,后面的基本操作都是基于此
import datetime import time
2. 獲取當前時間
獲取當前時間,有幾種方式,分別使用time和datetime來演示
a. time
獲取當前時間,格式化為字符串輸出
now = time.strftime("%Y-%m-%d %H:%M:%S") print(now)
獲取當前時間,以時間戳方式輸出,結果為float類型,單位為s
now=time.time() print(now)
b. datetime
直接調用now()函數獲取當前時間,返回datetime類型對象
now = datetime.datetime.now() print(now)
3. 時間戳轉datetime
函數: datetime.datetime.fromtimestamp()
將時間戳轉換為datetime類型,因為后者可以進行日期的計算(如常見的加減或者格式化)
# 獲取當前的時間戳 now = time.time() # 將時間差轉換為datetime對象 date = datetime.datetime.fromtimestamp(now) print(date)
4. 時間戳轉格式化日期a. time
函數 time.strftime(format, localtime) 和 time.localtime(timestamp)
借助time的time.strftime
函數來實現轉換,這里還需要做一個額外的處理,將時間戳轉換為struct_time 對象
now = time.time() # 首先格式化時間戳為struct_time對象,接著格式化輸出 time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now))
b. datetime
函數 datetime.datetime.fromtimestamp 與 datetime.datetime.strftime()
借助前面的知識點即可實現,先將timestamp轉換為datetime, 然后將datetime格式化為字符串
now=time.time() date =datetime.datetime.fromtimestamp(now) date.strftime('%Y-%m-%d %H:%M:%S')
5. 字符串轉時間戳
函數 strptime(str) 與 time.mktime(struct_time)
前面格式化輸出字符串時,主要利用的是strftime
,這里則主要使用 strptime
now='2019-02-11 18:45:22' struct_time=time.strptime(now , '%Y-%m-%d %H:%M:%S') timestamp=time.mktime(struct_time)
6. 字符串轉datetime
函數 datetime.datetime.strptime(str, format)
依然使用strptime
函數來實現轉換
now='2019-02-11 18:45:22' date=datetime.datetime.strptime(now, '%Y-%m-%d %H:%M:%S')
7. datetime 轉字符串
函數 datetime.datetime.strftime(format)
利用strftime
來實現
now = datetime.datetime.now() now.strftime('%Y-%m-%d %H:%M:%S')
8. datetime 轉時間戳
函數 datetime.datetime.timestamp()
結合前面的這個就比較好實現了
now = datetime.datetime.now() now.timestamp()
9. datetime轉struct_time
now = datetime.datetime.now() # 轉換為 struct_time 對象 t=now.timetuple() # struct_time 輸出時間戳 timestamp=time.mktime(t)
10. 日期加減操作
函數 datetime.timedelta
日期的加減操作,這里主要是datetime對象來操作,一個簡單的例子如下
now = datetime.datetime.now() # 前一小時 d1 = now - datetime.timedelta(hours=1) print(d1.strftime("%Y-%m-%d %H:%S:%M")) # 前一天 d2 = now - datetime.timedelta(days=1) print(d2.strftime("%Y-%m-%d %H:%S:%M")) # 上周日 d3 = now - datetime.timedelta(days=now.isoweekday()) print(d3.strftime("%Y-%m-%d %H:%S:%M"), " ", d3.isoweekday()) # 上周一 d31 = d3 - datetime.timedelta(days=6) print(d31.strftime("%Y-%m-%d %H:%S:%M"), " ", d31.isoweekday()) # 上個月最后一天 d4 = now - datetime.timedelta(days=now.day) print(d3.strftime("%Y-%m-%d %H:%S:%M")) # 上個月第一天 print(datetime.datetime(d4.year, d4.month, 1))
11. 格式化符號
%y # 兩位數的年份表示(00-99) %Y # 四位數的年份表示(000-9999) %m # 月份(01-12) %d # 月內中的一天(0-31) %H # 24小時制小時數(0-23) %I # 12小時制小時數(01-12) %M # 分鐘數(00=59) %S # 秒(00-59) %a # 本地簡化星期名稱 %A # 本地完整星期名稱 %b # 本地簡化的月份名稱 %B # 本地完整的月份名稱 %c # 本地相應的日期表示和時間表示 %j # 年內的一天(001-366) %p # 本地A.M.或P.M.的等價符 %U # 一年中的星期數(00-53)星期天為星期的開始 %w # 星期(0-6),星期天為星期的開始 %W # 一年中的星期數(00-53)星期一為星期的開始 %x # 本地相應的日期表示 %X # 本地相應的時間表示 %Z # 當前時區的名稱 %% # %號本身
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。