搜尋
首頁後端開發Python教學Python中datetime模組的介紹(附範例)

本篇文章帶給大家的內容是關於Python中datetime模組的介紹(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

Python提供了多個內建模組用於操作日期時間,像 calendar,time,datetime。 time模組提供的介面與C標準庫 time.h 基本一致。相較於 time 模組,datetime模組的介面則更直覺、更容易呼叫。

模組定義了兩個常數:

  • #datetime.MINYEAR

  • #datetime.MAXYEAR

  • 這兩個常數分別表示datetime 所能表示的最小、最大年份。其中,MINYEAR = 1,MAXYEAR = 9999。

    datetime

    模組定義了以下這幾個類別:
  • #datetime.date

    :表示日期的類別。常用的屬性有year, month, day;
  • datetime.time

    :表示時間的類別。常用的屬性有hour, minute, second, microsecond;

#datetime.datetime

:表示日期時間。

datetime.timedelta

:表示時間間隔,即兩個時間點之間的長度。

    datetime.tzinfo
  • :與時區相關的相關資訊。

  • 註:

    以上列舉的這些類型的物件都是不可變(immutable)的。
  • date 類別

  • date
類別表示日期(由年、月、日組成),其原型如下:

class datetime.date( year, month, day)
  • 參數說明:

    year 的範圍是[MINYEAR, MAXYEAR],即[1, 9999];

  • month 的範圍是[1, 12]。 (月份是從1開始的,不是從0開始);

    day 的最大值根據給定的year, month參數來決定。例如閏年2月份有29天;
  • date 類別定義了一些常用的類別方法與類別屬性:

  • ##date. max

    date.min:date物件所能表示的最大、最小日期;

  • date.resolution:date對象表示日期的最小單位。這裡是天。

date.today()

:傳回一個表示目前本機日期的date 物件;

  • date .fromtimestamp(timestamp):根據給定的時間戮,返回一個date 物件;##datetime.fromordinal(ordinal)

    :將Gregorian日曆時間轉換為date物件;(Gregorian Calendar:一種日曆表示方法,類似於我國的農曆,西方國家使用比較多,此處不詳細展開討論。)
  • 使用範例:

    >>> datetime.date.max
    datetime.date(9999, 12, 31)
    >>> datetime.date.min
    datetime.date(1, 1, 1)
    >>> datetime.date.resolution
    datetime.timedelta(1)
    >>> datetime.date.today()
    datetime.date(2016, 5, 12)
    >>> datetime.date.fromtimestamp(time.time())
    datetime.date(2016, 5, 12)
    date提供的實例方法與屬性:
  • #date.year

  • date.month
  • date.day:年、月、日;

  • date.replace(year, month, day):產生一個新的日期對象,用參數指定的年,月,日代替原有物件中的屬性。 (原有物件仍保持不變)

  • date.timetuple():傳回日期對應的time.struct_time物件;

  • date.toordinal():傳回日期對應的Gregorian Calendar日期;

  • date.weekday():傳回weekday ,如果是星期一,返回0;如果是星期2,返回1,以此類推;

  • #data.isoweekday():返回weekday,如果是星期一,回傳1;如果是星期2,回傳2,以此類推;

date.isocalendar()

:傳回格式如(year,month, day)的元組;

    date.isoformat()
  • :傳回格式如'YYYY-MM-DD'的字串;

  • #date.strftime(fmt)
:自訂格式化字串。

  • 使用範例:

    >>> today = datetime.date.today()
    >>> today.year
    2016
    >>> today.month
    5
    >>> today.day
    12
    >>> tomorrow = today.replace(day=13)
    >>> tomorrow
    datetime.date(2016, 5, 13)
    >>> tomorrow.timetuple()
    time.struct_time(tm_year=2016, tm_mon=5, tm_mday=13, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=134, tm_isdst=-1)
    >>> tomorrow.toordinal()
    736097
    >>> tomorrow.weekday()
    4
    >>> tomorrow.isoweekday()
    5
    >>> tomorrow.isocalendar()
    (2016, 19, 5)
    >>> tomorrow.isoformat()
    '2016-05-13'
    >>> tomorrow.strftime("%y-%m-%d")
    '16-05-13'
    date 重載了簡單的運算子:date 允許對日期進行加減和比較:

    date2 = date1 timedelta

##date2 = date1 - timedelta

##########日期隔去間隔,回傳一個新的日期物件######### ######timedelta = date1 - date2###:############兩個日期相減,傳回一個時間間隔物件############ ###date1 >>> now = datetime.date.today() >>> now datetime.date(2016, 5, 12) >>> now += datetime.date.resolution >>> now datetime.date(2016, 5, 13) >>> now -= datetime.date.resolution >>> now datetime.date(2016, 5, 12) >>> now ###Time類別#########time### 類別表示時間(由時、分、秒以及微秒組成),其原型如下:######class datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)######參數說明:###
  • hour 的范围为[0, 24),

  • minute 的范围为[0, 60),

  • second 的范围为[0, 60),

  • microsecond 的范围为[0, 1000000),

  • tzinfo 表示时区信息。

time 类定义的类属性:

  • time.mintime.max:time类所能表示的最小、最大时间。其中,time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999);

  • time.resolution:时间的最小单位,这里是1微秒;

使用示例:

>>> datetime.time.min
datetime.time(0, 0)
>>> datetime.time.max
datetime.time(23, 59, 59, 999999)
>>> datetime.time.resolution
datetime.timedelta(0, 0, 1)

time类提供的实例方法和属性:

  • time.hourtime.minutetime.secondtime.microsecond:时、分、秒、微秒;

  • time.tzinfo:时区信息;

  • time.replace([hour[, minute[, second[, microsecond[, tzinfo]]]]]):创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变);

  • time.isoformat():返回型如"HH:MM:SS"格式的字符串表示;

  • time.strftime(fmt):返回自定义格式化字符串。

使用示例:

>>> tm = datetime.time(18, 18, 18)
>>> tm.hour
18
>>> tm.minute
18
>>> tm.second
18
>>> tm.microsecond
0
>>> tm.tzinfo
>>> tm.isoformat()
'18:18:18'
>>> tm.replace(hour=20)
datetime.time(20, 18, 18)
>>> tm.strftime("%I:%M:%S %p")
'06:18:18 PM'

time 类的对象只能进行比较,无法进行加减操作。

datetime 类

datetime 是 date 与 time 的结合体,包括 date 与 time 的所有信息。其原型如下:

class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

各参数的含义与date、time的构造函数中的一样,要注意参数值的范围。

datetime类定义的类属性与方法:

  • datetime.mindatetime.max:datetime所能表示的最小值与最大值;

  • datetime.resolution:datetime最小单位;

  • datetime.today():返回一个表示当前本地时间的datetime对象;

  • datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;

  • datetime.utcnow():返回一个当前utc时间的datetime对象;

  • datetime.fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;

  • datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;

  • datetime.combine(date, time):根据date和time,创建一个datetime对象;

  • datetime.strptime(date_string, format):将格式字符串转换为datetime对象,data 与 time 类没有提供该方法。

使用示例:

>>> datetime.datetime.min
datetime.datetime(1, 1, 1, 0, 0)
>>> datetime.datetime.max
datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
>>> datetime.datetime.resolution
datetime.timedelta(0, 0, 1)
>>> print datetime.datetime.resolution
0:00:00.000001
>>> today = datetime.datetime.today()
>>> today
datetime.datetime(2016, 5, 12, 12, 46, 47, 246240)
>>> datetime.datetime.now()
datetime.datetime(2016, 5, 12, 12, 47, 9, 850643)
>>> datetime.datetime.utcnow()
datetime.datetime(2016, 5, 12, 4, 47, 42, 188124)
>>> datetime.datetime.fromtimestamp(time.time())
datetime.datetime(2016, 5, 12, 12, 48, 40, 459676)
>>> datetime.datetime.combine(datetime.date(1990, 10, 05), datetime.time(18, 18, 18))
datetime.datetime(1990, 10, 5, 18, 18, 18)
>>> datetime.datetime.strptime("2010-04-07 01:48:16.234000", "%Y-%m-%d %H:%M:%S .%f")
datetime.datetime(2010, 4, 7, 1, 48, 16, 234000)

datetime 的实例方法与属性

datetime类提供的实例方法与属性大部分功能与 date 和 time 类似,这里仅罗列方法名不再赘述:

  • datetime.yearmonthdayhourminutesecondmicrosecondtzinfo

  • datetime.date():获取date对象;

  • datetime.time():获取time对象;

  • datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]]):

  • *datetime.timetuple() *

  • *datetime.utctimetuple() *

  • datetime.toordinal()

  • datetime.weekday()

  • datetime.isocalendar()

  • datetime.isoformat([sep])

  • datetime.ctime():返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple()));

  • datetime.strftime(format)

datetime 对象同样可以进行比较,或者相减返回一个时间间隔对象,或者日期时间加上一个间隔返回一个新的日期时间对象。

timedelta 类

datetime.timedelta 对象代表两个时间之间的的时间差,两个 date 或 datetime 对象相减时可以返回一个timedelta 对象。其原型如下:

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

所有参数可选,且默认都是0,参数的值可以是整数,浮点数,正数或负数。

内部只存储days,seconds,microseconds,其他参数的值会自动按如下规则抓转换:

  • 1 millisecond(毫秒) 转换成 1000 microseconds(微秒)

  • 1 minute 转换成 60 seconds

  • 1 hour 转换成 3600 seconds

  • 1 week转换成 7 days

三个参数的取值范围分别为:

  • 0

  • 0

  • -999999999

timedelta 类定义的类属性:

  • timedelta.min:时间间隔对象的最小值,即 timedelta(-999999999).

  • timedelta.max:时间间隔对象的最大值,即 timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999).

  • timedelta.resolution:时间间隔的最小单位,即 timedelta(microseconds=1).

使用示例:

>>> datetime.timedelta.min
datetime.timedelta(-999999999)
>>> datetime.timedelta.max
datetime.timedelta(999999999, 86399, 999999)
>>> datetime.timedelta.resolution
datetime.timedelta(0, 0, 1)
>>> print datetime.timedelta.resolution
0:00:00.000001

timedelta 实例方法

  • timedelta.total_seconds():计算时间间隔的总秒数

使用示例:

>>> datetime.timedelta.resolution.total_seconds()
1e-06

格式字符串

datetime、date、time 都提供了 strftime() 方法,该方法接收一个格式字符串,输出日期时间的字符串表示。支持的转换格式如下:

%a星期的简写。如 星期三为Web
%A星期的全写。如 星期三为Wednesday
%b月份的简写。如4月份为Apr
%B月份的全写。如4月份为April
%c: 日期时间的字符串表示。(如: 04/07/10 10:43:39)
%d: 日在这个月中的天数(是这个月的第几天)
%f: 微秒(范围[0,999999])
%H: 小时(24小时制,[0, 23])
%I: 小时(12小时制,[0, 11])
%j: 日在年中的天数 [001,366](是当年的第几天)
%m: 月份([01,12])
%M: 分钟([00,59])
%p: AM或者PM
%S: 秒(范围为[00,61],为什么不是[00, 59],参考python手册~_~)
%U: 周在当年的周数当年的第几周),星期天作为周的第一天
%w: 今天在这周的天数,范围为[0, 6],6表示星期天
%W: 周在当年的周数(是当年的第几周),星期一作为周的第一天
%x: 日期字符串(如:04/07/10)
%X: 时间字符串(如:10:43:39)
%y: 2个数字表示的年份
%Y: 4个数字表示的年份
%z: 与utc时间的间隔 (如果是本地时间,返回空字符串)
%Z: 时区名称(如果是本地时间,返回空字符串)
%%: %% => %

使用示例:

>>> dt = datetime.datetime.now()
>>> dt.strftime('%Y-%m-%d %H:%M:%S %f')
'2016-05-12 14:19:22 333943'
>>> dt.strftime('%y-%m-%d %I:%M:%S %p')
'16-05-12 02:19:22 PM'
>>> dt.strftime("%a")
'Thu'
>>> dt.strftime("%A")
'Thursday'
>>> dt.strftime("%b")
'May'
>>> dt.strftime("%B")
'May'
>>> dt.strftime("%c")
'Thu May 12 14:19:22 2016'
>>> dt.strftime("%x")
'05/12/16'
>>> dt.strftime("%X")
'14:19:22'
>>> dt.strftime("%w")
'4'
>>> dt.strftime("%j")
'133'
>>> dt.strftime("%u")
'4'
>>> dt.strftime("%U")
'19'

以上是Python中datetime模組的介紹(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:segmentfault。如有侵權,請聯絡admin@php.cn刪除
Python和時間:充分利用您的學習時間Python和時間:充分利用您的學習時間Apr 14, 2025 am 12:02 AM

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python:遊戲,Guis等Python:遊戲,Guis等Apr 13, 2025 am 12:14 AM

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python vs.C:申請和用例Python vs.C:申請和用例Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時的Python計劃:一種現實的方法2小時的Python計劃:一種現實的方法Apr 11, 2025 am 12:04 AM

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python:探索其主要應用程序Python:探索其主要應用程序Apr 10, 2025 am 09:41 AM

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

您可以在2小時內學到多少python?您可以在2小時內學到多少python?Apr 09, 2025 pm 04:33 PM

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能