最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python表示當前時間的方法合集

 更新時間:2023年01月31日 17:11:05   作者:Ian Currie  
在 Python 中獲取當前時間是許多與時間有關(guān)的操作的一個很好的起點。一個非常重要的用例是創(chuàng)建時間戳。在本教程中,你將學習如何用 datetime 模塊獲取、顯示和格式化當前時間

在 Python 中獲取當前時間是許多與時間有關(guān)的操作的一個很好的起點。一個非常重要的用例是創(chuàng)建時間戳。在本教程中,你將學習如何用 datetime 模塊獲取、顯示和格式化當前時間。

我們將學習如何讀取當前時間的屬性,如年份、分鐘或秒。為了使時間更容易閱讀,將探索打印時間的選項。我們還將了解不同的時間格式,學習計算機如何表示時間,如何將時間序列化,以及如何處理時區(qū)問題。

如何在Python中獲取時間

獲取和打印當前時間最直接的方法是使用 datetime 模塊中 datetime 類的 .now()方法。

>>> from datetime import datetime
>>> now = datetime.now()
>>> now
datetime(2022, 11, 22, 14, 31, 59, 331225)
>>> print(now)
2022-11-22 14:31:59.331225

類方法 .now()是一個構(gòu)造方法,返回一個日期時間對象。當REPL評估now變量時,你會得到一個日期時間對象的表示。要知道每個數(shù)字的含義可能相當困難。但是如果明確地打印now變量,那么你會得到一個稍微不同的輸出,它以熟悉的時間戳格式呈現(xiàn)信息。

你可能會認識到打印的datetime對象的格式。它嚴格遵循國際標準,即ISO 8601,用于格式化時間和日期。你會在很多地方發(fā)現(xiàn)這種格式!

不過,在 Python 使用的格式中,與 ISO 8601 標準有一點偏差。標準規(guī)定,時間戳的日期和小時部分應該用T字符分開,但是通過 print()函數(shù)傳遞的默認日期對象用一個空格將它們分開。

Python 是可擴展的和可定制的,它使你能夠定制打印時間戳的格式。在打印時,datetime類內(nèi)部使用它的 .isoformat()方法。由于 .isoformat()只是一個實例方法,你可以從任何日期時間對象中直接調(diào)用它來定制ISO時間戳。

>>> datetime.now().isoformat()
'2022-11-22T14:31:59.331225'
>>> datetime.now().isoformat(sep=" ")
'2022-11-22 14:31:59.331225'

你會注意到,當你調(diào)用 .isoformat()時,沒有任何參數(shù),使用的是標準的ISO 8601分隔符T。然而,datetime類實現(xiàn)其特殊實例方法 .__str__()的方式,是用一個空格作為分隔符參數(shù)。

能夠得到完整的日期和時間是很好的,但有時你可能會尋找一些特定的東西。例如,你可能只想知道月份或日期。在這些情況下,你可以從一系列的屬性中選擇。

>>> from datetime import datetime
>>> now = datetime.now()
>>> print(f"""
... {now.month = }
... {now.day = }
... {now.hour = }
... {now.minute = }
... {now.weekday() = }
... {now.isoweekday() = }"""
... )
now.month = 11
now.day = 22
now.hour = 14
now.minute = 31
now.weekday() = 1
now.isoweekday() = 2

在這個片段中,使用了一個三引號的f-字符串,在大括號內(nèi)使用=符號來輸出表達式和其結(jié)果。

繼續(xù)探索不同的屬性和方法,用一個datetime對象調(diào)用 dir()函數(shù),列出當前范圍內(nèi)可用的名稱?;蛘吣憧梢圆榭匆幌耫atetime的文檔。無論哪種方式,你都會發(fā)現(xiàn)有大量的選項。

你會注意到,最后一個例子的結(jié)果一般都是數(shù)字。這可能很適合你,但也許將工作日顯示為數(shù)字并不理想。由于 .weekday()和 .isoweekday()方法返回不同的數(shù)字,這也會讓人特別困惑。

一個ISO時間戳很好,但也許你想要比ISO時間戳更可讀的東西。例如,對于一個人來說,毫秒可能有點難讀。在下一節(jié)中,你將學習如何以任何你喜歡的方式格式化你的時間戳。

格式化時間戳以提高可讀性

為了方便以自定義的、人類可讀的方式輸出時間,datetime有一個方法叫做 .strftime()。.strftime()方法需要一個格式代碼作為參數(shù)。格式代碼是一個包含一堆特殊標記的字符串,這些標記將被替換成來自datetime對象的信息。

.strftime()方法將為你提供大量的選項,以確定如何準確地表示你的日期時間對象。例如,以下面這種格式為例。

>>> from datetime import datetime
>>> datetime.now().strftime("%A, %B %d")
'Tuesday, November 22'

在這個例子中,使用了以下格式代碼:

  • %A : 星期的全稱
  • %B : 月的全稱
  • %d : 本月的數(shù)字日期

格式字符串中的逗號和字面空格按原樣打印。.strftime()方法只替換它所識別的代碼。.strftime()中的格式代碼總是以百分號(%)開始,這遵循了一個舊的C標準。這些代碼類似于舊的printf字符串格式化風格,但它們是不一樣的。

格式代碼的文檔中有一個很好的表格,向你展示了可以使用的所有不同的格式代碼。

>>> f"{datetime.now():%A, %B %d}"
'Tuesday, November 22'

因此,現(xiàn)在你可以獲得時間并按照你的喜好進行格式化。這應該可以滿足你的基本時間顯示需求,但也許你對計算機如何在內(nèi)部表示和處理時間以及如何在文件或數(shù)據(jù)庫中存儲時間感到好奇。在下一節(jié)中,你將會了解到這一點。

在Python中獲取當前的Unix時間

計算機喜歡數(shù)字。但日期和時間是有趣的人類數(shù)字,遵循有趣的規(guī)則。一天有24個小時?一小時內(nèi)有60分鐘?這是誰的聰明主意?

為了簡化問題,并考慮到計算機并不介意大數(shù)字,在開發(fā)Unix操作系統(tǒng)的某個時候,人們做出了一個決定。

這個決定是將所有時間表示為自1970年1月1日UTC午夜以來所經(jīng)過的秒數(shù)。這個時間點也被稱為Unix紀 元。該時間系統(tǒng)被稱為Unix時間。今天的大多數(shù)計算機系統(tǒng)--甚至是Windows--都使用Unix時間來表示內(nèi)部時間。

1970年1月1日UTC午夜的Unix時間為零。如果你想知道當前的Unix時間,那么你可以使用另一種日期時間方法。

>>> from datetime import datetime
>>> datetime.now().timestamp()
1669123919.331225

.timestamp()方法返回自Unix紀 元以來的秒數(shù),精度很高。畢竟,在所有的屬性和方法之下,每一個日期對于大多數(shù)計算機來說都不過是一個大數(shù)字而已。

在大多數(shù)情況下,你可以不去管Unix時間。這是一種代表時間的方式,對計算機來說很有效,但對那些習慣于人類日歷(如公歷)的人來說卻不是。不過,Unix時間戳會出現(xiàn)在你的日期和時間探索之旅中,所以它們絕對是值得了解的。

一個正確生成的Unix時間戳最棒的一點是,它明確地捕捉了全世界的某個時刻。Unix的紀 元總是在UTC,所以在時區(qū)偏移方面沒有任何歧義--也就是說,如果你能可靠地創(chuàng)建不偏離UTC的時間戳。

但不幸的是,你經(jīng)常不得不處理混亂的時區(qū)問題。不過,千萬不要害怕!在下一節(jié)中,你將會了解到如何處理時區(qū)問題。在下一節(jié)中,你將了解認識時區(qū)感知的數(shù)據(jù)時間對象。

獲取與時區(qū)相關(guān)的Python時間和日期對象

Unix時間戳的明確性很有吸引力,但一般來說,用ISO 8601格式來序列化時間和日期會更好,因為除了便于計算機分析外,它也是人類可讀的,而且是一個國際標準。

更重要的是,盡管Unix的時間戳在某種程度上是可識別的,但它們可能會被誤認為代表其他東西。畢竟,它們只是數(shù)字而已。有了ISO時間戳,你馬上就知道它代表什么。引用Python之禪的話來說,就是可讀性很重要。

如果你想用完全明確的術(shù)語表示你的日期時間對象,那么你首先需要讓你的對象具有時區(qū)意識。一旦你有了一個時區(qū)感知的對象,時區(qū)信息就會被添加到你的ISO時間戳中。

>>> from datetime import datetime
>>> now = datetime.now()
>>> print(now.tzinfo)
None
>>> now_aware = now.astimezone()
>>> print(now_aware.tzinfo)
Romance Standard Time
>>> now_aware.tzinfo
datetime.timezone(datetime.timedelta(seconds=3600), 'Romance Standard Time')
>>> now_aware.isoformat()
'2022-11-22T14:31:59.331225+01:00'

在這個例子中,首先證明now對象沒有任何時區(qū)信息,因為它的 .tzinfo屬性返回 none。當你在沒有任何參數(shù)的情況下對now調(diào)用 .astimezone()時,本地系統(tǒng)的時區(qū)會被用來用一個時區(qū)對象填充 .tzinfo。

一個時區(qū)對象本質(zhì)上只是一個與UTC時間的偏移量和一個名稱。在這個例子中,本地時區(qū)的名稱是羅曼斯標準時間,偏移量是3600秒,或一個小時。

現(xiàn)在數(shù)據(jù)時間對象有一個時區(qū)對象,你可以認為它是時區(qū)感知的。因此,當你對時區(qū)感知對象調(diào)用 .isoformat()時,你會注意到+01:00被加在了結(jié)尾。這代表了與UTC時間的一小時偏移。

如果你在不同的地方,例如秘魯?shù)睦R,那么你的 .isoformat()輸出可能看起來像這樣。

>>> now_aware.isoformat()
'2022-11-22T07:31:59.331225-06:00'

時間會有所不同,你會看到UTC的偏移量現(xiàn)在是-06:00。所以,現(xiàn)在你的時間戳看起來不錯,而且在代表時間方面是明確的。

你甚至可以像許多人一樣,更進一步,將你的時間戳存儲為UTC時間,這樣一切都會很好地規(guī)范化。

>>> from datetime import datetime, timezone
>>> now = datetime.now()
>>> now.isoformat()
'2022-11-22T14:31:59.331225'
>>> now_utc = datetime.now(timezone.utc)
>>> now_utc.isoformat()
'2022-11-22T13:31:59.331225+00:00'

將 timezone.utc時區(qū)傳遞給 .now()構(gòu)造函數(shù)方法將返回一個UTC時間。請注意,在這個例子中,時間與當?shù)貢r間有偏差。

ISO 8601標準也接受用Z代替+00:00來表示UTC時間。這有時被稱為祖魯時間,這也是它在航空領(lǐng)域的稱呼。

在航空領(lǐng)域,必須在UTC時間內(nèi)操作。無論在什么地方,在一個共同的時間內(nèi)操作,在像航空這樣的領(lǐng)域是至關(guān)重要的。想象一下,空中交通管制部門必須處理每架飛機根據(jù)其出發(fā)地報告的估計降落時間。如若不然會造成混亂和災難!

結(jié)論

在本教程中,我們已經(jīng)掌握了時間!你已經(jīng)生成了一個日期時間對象,并看到了如何挑選出該對象的不同屬性。你還研究了幾種以不同格式輸出日期時間對象的方法。

你還熟悉了UNIX時間和ISO時間戳,探索了如何明確地表示你的時間戳。為此,你已經(jīng)涉足了復雜的時區(qū)世界,并使你的數(shù)據(jù)時間對象具有時區(qū)意識。

到此這篇關(guān)于Python表示當前時間的方法合集的文章就介紹到這了,更多相關(guān)Python表示當前時間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中sorted()用法案例代碼

    Python中sorted()用法案例代碼

    sorted() 作為?Python?內(nèi)置函數(shù)之一,其功能是對序列(列表、元組、字典、集合、還包括字符串)進行排序,這篇文章主要介紹了Python中sorted()用法,需要的朋友可以參考下
    2023-02-02
  • Python 套接字 Accept 超時問題解析

    Python 套接字 Accept 超時問題解析

    本文討論了 Python 中套接字的超時功能,該功能對于緩解無限期等待套接字接受的問題是必要的,下面通過本文給大家大家介紹Python 套接字 Accept 超時問題,需要的朋友可以參考下
    2023-06-06
  • python進程管理工具supervisor的安裝與使用教程

    python進程管理工具supervisor的安裝與使用教程

    supervisor是用python寫的一個進程管理工具,用來啟動,重啟,關(guān)閉進程。下面這篇文章主要給大家介紹了關(guān)于python實現(xiàn)的進程管理工具supervisor的安裝與使用的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • Python中的getopt函數(shù)使用詳解

    Python中的getopt函數(shù)使用詳解

    這篇文章主要介紹了Python中的getopt函數(shù)使用詳解,是Python進階學習中的重要知識,需要的朋友可以參考下
    2015-07-07
  • Python腳本實現(xiàn)下載合并SAE日志

    Python腳本實現(xiàn)下載合并SAE日志

    這篇文章主要介紹了Python腳本實現(xiàn)下載合并SAE日志,本文講解了代碼編寫過程,然后給出了完整代碼,需要的朋友可以參考下
    2015-02-02
  • Python繪圖實現(xiàn)顯示中文

    Python繪圖實現(xiàn)顯示中文

    今天小編就為大家分享一篇Python繪圖實現(xiàn)顯示中文,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • PyCharm+Miniconda3安裝配置教程詳解

    PyCharm+Miniconda3安裝配置教程詳解

    這篇文章主要介紹了PyCharm+Miniconda3安裝配置教程詳解,需要的朋友可以參考下
    2021-02-02
  • python reverse反轉(zhuǎn)部分數(shù)組的實例

    python reverse反轉(zhuǎn)部分數(shù)組的實例

    今天小編就為大家分享一篇python reverse反轉(zhuǎn)部分數(shù)組的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python機器學習庫scikit-learn入門開發(fā)示例

    Python機器學習庫scikit-learn入門開發(fā)示例

    scikit-learn是一個開源Python語言機器學習工具包,它涵蓋了幾乎所有主流機器學習算法的實現(xiàn),并且提供了一致的調(diào)用接口。它基于Numpy和scipy等Python數(shù)值計算庫,提供了高效的算法實現(xiàn)
    2022-07-07
  • python實現(xiàn)分頁效果

    python實現(xiàn)分頁效果

    這篇文章主要為大家詳細介紹了python實現(xiàn)分頁效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評論

南丹县| 璧山县| 正宁县| 阿合奇县| 盘锦市| 紫阳县| 泊头市| 南安市| 博客| 曲阳县| 千阳县| 铜山县| 葵青区| 原阳县| 张北县| 尤溪县| 含山县| 岗巴县| 页游| 潢川县| 合作市| 兴宁市| 营山县| 左云县| 古交市| 平泉县| 海城市| 贵溪市| 洛南县| 鄄城县| 安图县| 遂平县| 贵溪市| 绥江县| 福清市| 龙海市| 商南县| 兴文县| 巴马| 阿巴嘎旗| 揭东县|