日期時間常用功能和函數

1 time 模塊

time 模塊提供了很多與時間相關的類和函數,下面我們介紹一些常用的。

1.1 struct_time 類

time 模塊的 struct_time 類代表一個時間對象,可以通過索引和屬性名訪問值。對應關系如下所示:

索引屬性
0tm_year(年)如:1945
1tm_mon(月)1 ~ 12
2tm_mday(日)1 ~ 31
3tm_hour(時)0 ~ 23
4tm_min(分)0 ~ 59
5tm_sec(秒)0 ~ 61
6tm_wday(周)0 ~ 6
7tm_yday(一年內第幾天)1 ~ 366
8tm_isdst(夏時令)-1、0、1

tm_sec 范圍為 0 ~ 61,值 60 表示在閏秒的時間戳中有效,并且由于歷史原因支持值 61。

localtime() 表示當前時間,返回類型為 struct_time 對象,示例如下所示:

import timet = time.localtime()print('t-->', t)print('tm_year-->', t.tm_year)print('tm_year-->', t[0])

輸出結果:???????

t--> time.struct_time(tm_year=2019, tm_mon=12, tm_mday=1, tm_hour=19, tm_min=49, tm_sec=54, tm_wday=6, tm_yday=335, tm_isdst=0)tm_year--> 2019tm_year--> 2019

1.2 常用函數

函數(常量)說明
time()返回當前時間的時間戳
gmtime([secs])將時間戳轉換為格林威治天文時間下的 struct_time,可選參數 secs 表示從 epoch 到現在的秒數,默認為當前時間
localtime([secs])與 gmtime() 相似,返回當地時間下的 struct_time
mktime(t)localtime() 的反函數
asctime([t])接收一個 struct_time 表示的時間,返回形式為:Mon Dec ?2 08:53:47 2019 的字符串
ctime([secs])ctime(secs) 相當于 asctime(localtime(secs))
strftime(format[, t])格式化日期,接收一個 struct_time 表示的時間,并返回以可讀字符串表示的當地時間
sleep(secs)暫停執行調用線程指定的秒數
altzone本地 DST 時區的偏移量,以 UTC 為單位的秒數
timezone本地(非 DST)時區的偏移量,UTC 以西的秒數(西歐大部分地區為負,美國為正,英國為零)
tzname兩個字符串的元組:第一個是本地非 DST 時區的名稱,第二個是本地 DST 時區的名稱

epoch:1970-01-01 00:00:00 UTC

基本使用如下所示:???????

import time
print(time.time())print(time.gmtime())print(time.localtime())print(time.asctime(time.localtime()))print(time.tzname)# strftime 使用print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))

strftime 函數日期格式化符號說明如下所示:

符號說明
%a本地化的縮寫星期中每日的名稱
%A本地化的星期中每日的完整名稱
%b本地化的月縮寫名稱
%B本地化的月完整名稱
%c本地化的適當日期和時間表示
%d十進制數 [01,31] 表示的月中日
%H十進制數 [00,23] 表示的小時(24小時制)
%I十進制數 [01,12] 表示的小時(12小時制)
%j十進制數 [001,366] 表示的年中日
%m十進制數 [01,12] 表示的月
%M十進制數 [00,59] 表示的分鐘
%p本地化的 AM 或 PM
%S十進制數 [00,61] 表示的秒
%U十進制數 [00,53] 表示的一年中的周數(星期日作為一周的第一天)
%w十進制數 [0(星期日),6] 表示的周中日
%W十進制數 [00,53] 表示的一年中的周數(星期一作為一周的第一天)
%x本地化的適當日期表示
%X本地化的適當時間表示
%y十進制數 [00,99] 表示的沒有世紀的年份
%Y十進制數表示的帶世紀的年份
%z時區偏移以格式 +HHMM 或 -HHMM 形式的 UTC/GMT 的正或負時差指示,其中 H 表示十進制小時數字,M 表示小數分鐘數字 [-23:59, +23:59]
%Z時區名稱
%%字面的 '%' 字符

2 datetime 模塊

datatime 模塊重新封裝了 time 模塊,提供了更多接口,變得更加直觀和易于調用。

2.1 date 類

date 類表示一個由年、月、日組成的日期,格式為:datetime.date(year, month, day)。

  • year 范圍為:[1, 9999]

  • month 范圍為:[1, 12]

  • day 范圍為 [1, 給定年月對應的天數]。

類方法和屬性如下所示:

方法(屬性)說明
today()返回當地的當前日期
fromtimestamp(timestamp)根據給定的時間戮,返回本地日期
mindate 所能表示的最小日期
maxdate 所能表示的最大日期

使用示例如下所示:???????

import datetimeimport time
print(datetime.date.today())print(datetime.date.fromtimestamp(time.time()))print(datetime.date.min)print(datetime.date.max)

實例方法和屬性如下所示:

方法(屬性)說明
replace(year, month, day)生成一個新的日期對象,用參數指定的年,月,日代替原有對象中的屬性
timetuple()返回日期對應的 struct_time 對象
weekday()返回一個整數代表星期幾,星期一為 0,星期天為 6
isoweekday()返回一個整數代表星期幾,星期一為 1,星期天為 7
isocalendar()返回格式為 (year,month,day) 的元組
isoformat()返回格式如 YYYY-MM-DD 的字符串
strftime(format)返回自定義格式的字符串
year
month
day

使用示例如下所示:???????

import datetime
td = datetime.date.today()print(td.replace(year=1945, month=8, day=15))print(td.timetuple())print(td.weekday())print(td.isoweekday())print(td.isocalendar())print(td.isoformat())print(td.strftime('%Y %m %d %H:%M:%S %f'))print(td.year)print(td.month)print(td.day)

2.2 time 類

time 類表示由時、分、秒、微秒組成的時間,格式為:time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)。

  • hour 范圍為:[0, 24)

  • minute 范圍為:[0, 60)

  • second 范圍為:[0, 60)

  • microsecond 范圍為:[0, 1000000)

  • fold 范圍為:[0, 1]

實例方法和屬性如下所示:

方法(屬性)說明
isoformat()返回 HH:MM:SS 格式的字符串
replace(hour, minute, second, microsecond, tzinfo, * fold=0)創建一個新的時間對象,用參數指定的時、分、秒、微秒代替原有對象中的屬性
strftime(format)返回自定義格式的字符串
hour
minute
second
microsecond微秒
tzinfo時區

使用示例如下所示:???????

import datetime
t = datetime.time(10, 10, 10)print(t.isoformat())print(t.replace(hour=9, minute=9))print(t.strftime('%I:%M:%S %p'))print(t.hour)print(t.minute)print(t.second)print(t.microsecond)print(t.tzinfo)

2.3 datetime 類

datetime 包括了 date 與 time 的所有信息,格式為:datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0),參數范圍值參考 date 類與 time 類。

類方法和屬性如下所示:

方法(屬性)說明
today()返回當地的當前時間
now(tz=None)類似于 today(),可選參數 tz 可指定時區
utcnow()返回當前 UTC 時間
fromtimestamp(timestamp, tz=None)根據時間戳返回對應時間
utcfromtimestamp(timestamp)根據時間戳返回對應 UTC 時間
combine(date, time)根據 date 和 time 返回對應時間
mindatetime 所能表示的最小日期
maxdatetime 所能表示的最大日期

使用示例如下所示:???????

import datetime
print(datetime.datetime.today())print(datetime.datetime.now())print(datetime.datetime.utcnow())print(datetime.datetime.fromtimestamp(time.time()))print(datetime.datetime.utcfromtimestamp(time.time()))print(datetime.datetime.combine(datetime.date(2019, 12, 1), datetime.time(10, 10, 10)))print(datetime.datetime.min)print(datetime.datetime.max)

實例方法和屬性如下所示:

方法(屬性)說明
date()返回具有同樣 year,month,day 值的 date 對象
time()返回具有同樣 hour, minute, second, microsecond 和 fold 值的 time 對象
replace(year, month, day=self.day, hour, minute, second, microsecond, tzinfo, * fold=0)生成一個新的日期對象,用參數指定的年,月,日,時,分,秒...代替原有對象中的屬性
weekday()返回一個整數代表星期幾,星期一為 0,星期天為 6
isoweekday()返回一個整數代表星期幾,星期一為 1,星期天為 7
isocalendar()返回格式為 (year,month,day) 的元組
isoformat()返回一個以 ISO 8601 格式表示日期和時間的字符串 YYYY-MM-DDTHH:MM:SS.ffffff
strftime(format)返回自定義格式的字符串
year
month
day
hour
minute
second
microsecond微秒
tzinfo時區

使用示例如下所示:???????

import datetime
td = datetime.datetime.today()print(td.date())print(td.time())print(td.replace(day=11, second=10))print(td.weekday())print(td.isoweekday())print(td.isocalendar())print(td.isoformat())print(td.strftime('%Y-%m-%d %H:%M:%S .%f'))print(td.year)print(td.month)print(td.month)print(td.hour)print(td.minute)print(td.second)print(td.microsecond)print(td.tzinfo)

3 calendar 模塊

calendar 模塊提供了很多可以處理日歷的函數。

3.1 常用函數

方法說明
setfirstweekday(weekday)設置每一周的開始(0 表示星期一,6 表示星期天)
firstweekday()返回當前設置的每星期的第一天的數值
isleap(year)如果 year 是閏年則返回 True ,否則返回 False
leapdays(y1, y2)返回 y1 至 y2 (包含 y1 和 y2 )之間的閏年的數量
weekday(year, month, day)返回指定日期的星期值
monthrange(year, month)返回指定年份的指定月份第一天是星期幾和這個月的天數
month(theyear, themonth, w=0, l=0)返回月份日歷
prcal(year, w=0, l=0, c=6, m=3)返回年份日歷

使用示例如下所示:???????

import calendar
calendar.setfirstweekday(1)print(calendar.firstweekday())print(calendar.isleap(2019))print(calendar.leapdays(1945, 2019))print(calendar.weekday(2019, 12, 1))print(calendar.monthrange(2019, 12))print(calendar.month(2019, 12))print(calendar.prcal(2019))

3.2 Calendar 類

Calendar 對象提供了一些日歷數據格式化的方法,實例方法如下所示:

方法說明
iterweekdays()返回一個迭代器,迭代器的內容為一星期的數字
itermonthdates(year, month)返回一個迭代器,迭代器的內容為年 、月的日期

使用示例如下所示:

???????

from calendar import Calendar
c = Calendar()print(list(c.iterweekdays()))for i in c.itermonthdates(2019, 12):    print(i)

3.3 TextCalendar 類

TextCalendar 為 Calendar子類,用來生成純文本日歷。實例方法如下所示:

方法說明
formatmonth(theyear, themonth, w=0, l=0)返回一個多行字符串來表示指定年、月的日歷
formatyear(theyear, w=2, l=1, c=6, m=3)返回一個 m 列日歷,可選參數 w, l, 和 c 分別表示日期列數, 周的行數, 和月之間的間隔

使用示例如下所示:???????

from calendar import TextCalendar
tc = TextCalendar()print(tc.formatmonth(2019, 12))print(tc.formatyear(2019))

3.4 HTMLCalendar類

HTMLCalendar 類可以生成 HTML 日歷。實例方法如下所示:

方法說明
formatmonth(theyear, themonth, withyear=True)返回一個 HTML 表格作為指定年、月的日歷
formatyear(theyear, width=3)返回一個 HTML 表格作為指定年份的日歷
formatyearpage(theyear, width=3, css='calendar.css', encoding=None)返回一個完整的 HTML 頁面作為指定年份的日歷

使用示例如下所示:???????

from calendar import HTMLCalendar
hc = HTMLCalendar()print(hc.formatmonth(2019, 12))print(hc.formatyear(2019))print(hc.formatyearpage(2019))

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39055.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39055.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39055.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker容器與虛擬化技術:Docker資源控制、數據管理

目錄 一、理論 1.資源控制 2.Docker數據管理 二、實驗 1.Docker資源控制 2.Docker數據管理 三、問題 1.docker容器故障導致大量日志集滿,造成磁盤空間滿 2、當日志占滿之后如何處理 四、總結 一、理論 1.資源控制 (1) CPU 資源控制 cgroups&#xff0…

Java Vue Uniapp MES生產執行管理系統

本MES系統是一款B/S結構、通用的生產執行管理系統,功能強大! 系統基于多年離散智造行業的業務經驗組建,主要目的是為國內離散制造業的中小企業提供一個專業化、通用性、低成本的MES系統解決方案。 聯系作者獲取

Linux(進程控制)

進程控制 進程創建fork函數初識fork函數返回值寫時拷貝fork常規用法fork調用失敗的原因 進程終止進程退出碼進程常見退出方法 進程等待進程等待必要性獲取子進程status進程等待的方法 阻塞等待與非阻塞等待阻塞等待非阻塞等待 進程替換替換原理替換函數函數解釋命名理解 做一個…

re學習(32)【綠城杯2021】babyvxworks(淺談花指令)

鏈接:https://pan.baidu.com/s/1msA5EY_7hoYGBEema7nWwA 提取碼:b9xf wp:首先找不到main函數,然后尋找特殊字符串, 交叉引用 反匯編 主函數在sub_3D9當中,但是IDA分析錯了 分析錯誤后,刪除函數 創建函數 操…

【Linux】多線程1——線程概念與線程控制

文章目錄 1. 線程概念什么是線程Linux中的線程線程的優點線程的缺點線程的獨立資源和共享資源 2. 線程控制Linux的pthread庫用戶級線程 📝 個人主頁 :超人不會飛)📑 本文收錄專欄:《Linux》💭 如果本文對您有幫助&…

無腦入門pytorch系列(三)—— nn.Linear

本系列教程適用于沒有任何pytorch的同學(簡單的python語法還是要的),從代碼的表層出發挖掘代碼的深層含義,理解具體的意思和內涵。pytorch的很多函數看著非常簡單,但是其中包含了很多內容,不了解其中的意思…

SpringBoot復習:(46)全局的bean懶加載是怎么實現的?

在application.properties中配置: spring.main.lazy-initializationtrue在運行SpringApplication的run方法時,代碼如下: 其中調用了prepareContext,prepareContext代碼如下: 當在配置文件中配置了spring.main.lazy-initializat…

JavaScript實現在線Excel的附件上傳與下載

摘要:本文由葡萄城技術團隊于CSDN原創并首發。轉載請注明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。 前言 在本地使用Excel時,經常會有需要在Excel中添加一些附件文件的需求&am…

Clickhouse基于文件復制寫入

背景 目前clickhouse社區對于數據的寫入主要基于文件本地表、分布式表方式為主,但缺乏大批量快速寫入場景下的數據寫入方式,本文提供了一種基于clickhouse local 客戶端工具分布式處理hdfs數據表文件,并將clickhouse以文件復制的方式完成寫入…

解決并發沖突:Java實現MySQL數據鎖定策略

在并發環境下,多個線程同時對MySQL數據庫進行讀寫操作可能會導致數據沖突和不一致的問題。為了解決這些并發沖突,我們可以采用數據鎖定策略來保證數據的一致性和完整性。下面將介紹如何使用Java實現MySQL數據鎖定策略,以及相關的注意事項和最…

開源低代碼平臺Openblocks

網友 HankMeng 想看低代碼工具,正好手上有一個; 什么是 Openblocks ? Openblocks 是一個開發人員友好的開源低代碼平臺,可在幾分鐘內構建內部應用程序。 傳統上,構建內部應用程序需要復雜的前端和后端交互,…

如何保證微信小游戲存檔不丟失?

引言 微信小游戲的興起為玩家提供了一個輕松便捷的娛樂方式,然而,存檔丟失問題一直以來都是開發者和玩家關注的焦點。為了確保玩家的游戲體驗和投入能夠得到充分的保障,開發團隊需要采取一系列方法來保障微信小游戲存檔不丟失。本文將介紹一…

學習筆記十五:基于YUM文件運行POD應用

基于YUM文件運行POD應用 通過資源清單文件創建第一個Pod更新資源清單文件查看pod是否創建成功查看pod的ip和pod調度到哪個節點上假如pod里有多個容器,進入到pod里的指定容器查看pod詳細信息查看pod具有哪些標簽:刪除pod通過kubectl run創建Pod Pod資源清…

word之插入尾注+快速回到剛才編輯的地方

1-插入尾注 在編輯文檔時,經常需要對一段話插入一段描述或者附件鏈接等,使用腳注經常因占用篇幅較大導致文檔頁面內容雜亂,這事可以使用快捷鍵 ControlaltD 即可在 整個行文的末尾插入尾注,這樣文章整體干凈整潔,需…

【枚舉邊+MST+組合計數】CF1857G

Problem - 1857G - Codeforces 題意: 思路: 首先觀察一下樣例: 可以發現對于每一對點,貢獻是 s - 這對點對應的環的最大邊 1 那么這樣就有了 n^2 的做法 然后,根據慣用套路,枚舉樹上的點對問題可以轉…

Prometheus的搭建與使用

一、安裝Prometheus 官網下載地址:Download | Prometheus 解壓:tar -zxvf prometheus-2.19.2.linux-amd64.tar.gz重命名: mv prometheus-2.19.2.linux-amd64 /home/prometheus進入對應目錄: cd /home/prometheus查看配置文件&am…

淺析市面電商CRM系統|排單系統存在的不足

筆者做CRM尤其是電商CRM系統7年,相信我的分享能夠幫助大家對電商CRM有個清晰的認知。 系統本身是用來提升效率的,針對不少電商賣家或服務商,都有使用CRM系統來管理粉絲鏈接與營銷、銷售推廣等環節,來實現完整的CRM鏈路。尤其是在當…

OpenCV-Python中的圖像處理-傅里葉變換

OpenCV-Python中的圖像處理-傅里葉變換 傅里葉變換Numpy中的傅里葉變換Numpy中的傅里葉逆變換OpenCV中的傅里葉變換OpenCV中的傅里葉逆變換 DFT的性能優化不同濾波算子傅里葉變換對比 傅里葉變換 傅里葉變換經常被用來分析不同濾波器的頻率特性。我們可以使用 2D 離散傅里葉變…

2308C++對稱轉移

原文 了解對稱轉移 協程組提供了個編寫異步代碼的絕妙方法,與同步代碼一樣.只需要在合適地點加上協待,編譯器就會負責掛起協程,跨掛起點保留狀態,并在操作完成后恢復協程. 但是,最初有個令人討厭的限制,如果不小心,很容易導致棧溢出.如果想避免它,則必須引入額外同步成本,以…

Unity Spine幀事件

SpinePro中添加事件幀 首先 選中右上角的層級樹 然后選擇事件選項 最后在右下角看到 新建 點擊它 新建一個事件 點擊左上角的設置按鈕 彈出編輯窗口 編輯窗口 在右上角 動畫欄 可以切換對應的動畫 點坐邊的那個小灰點來切換 亮點代表當前動畫 選中幀 添加事件 點擊對應事件…