摘要:也只能傳入這個參數說明這個對象其實是用來表示兩個時間的間隔上面我們都是使用加上,那如果是減去這樣呢其實得出結果就是相反而已,不明白可以動手試一下,對比一下或之后的結果。
1. 先來看幾個常用的 1.1 獲取今天、昨天、明天的日期時間
from datetime import datetime, timedelta, date """今天""" today1 = date.today() # 精確到`天` today2 = datetime.today() # 精確到`微秒` str(today1), str(today2) # 結果: # datetime.date(2015, 11, 20) # datetime.datetime(2015, 11, 20, 16, 26, 21, 593990) # ("2015-11-20", "2015-11-20 16:26:21.593990) """昨天""" yesterday1 = date.today() + timedelta(days=-1) yesterday2 = datetime.today() + timedelta(days=-1) str(yesterday1), str(yesterday2) # 結果: # datetime.date(2015, 11, 19) # datetime.datetime(2015, 11, 19, 16, 26, 21, 593990) # ("2015-11-19", "2015-11-19 16:26:21.593990) """明天""" tomorrow1 = date.today() + timedelta(days=1) tomorrow2 = datetime.today() + timedelta(days=1) str(tomorrow1), str(tomorrow2) # 結果: # datetime.date(2015, 11, 21) # datetime.datetime(2015, 11, 21, 16, 26, 21, 593990) # ("2015-11-21", "2015-11-21 16:26:21.593990)
那獲取幾小時,幾分鐘,甚至幾秒鐘前后的時間呢?該怎么獲取?
看如下的代碼:
from datetime import datetime, timedelta # 獲取兩小時前的時間 date_time = datetime.today() + timedelta(hours=-2)
其實就是給 timedelta() 這個類傳入的參數變一下就可以了
可傳入的參數有 timedelta(weeks, days, hours, second, milliseconds, microseconds) 每個參數都是可選參數,默認值為0,參數值必須是這些(整數,浮點數,正數,負數)
分別表示:timedelta(周,日,時,分,秒,毫秒,微秒)。也只能傳入這7個參數
說明:timedelta 這個對象其實是用來表示兩個時間的間隔
上面我們都是使用 datetime.today() 加上 timedelta(),那如果是 datetime.today() 減去 timedelta() 這樣呢? 其實得出結果就是相反而已,不明白可以動手試一下,對比一下 + 或 - 之后的結果。
1.2 下面來說說獲取N年前/后,N月前/后的技巧因為 timedelta() 這個對象傳入的參數最大日期時間單位是周,最小的是 微秒,
所以,關于 年 和 月 需要我們手動處理一下
import datetime import calendar def conver(value, years=0, months=0): if months: more_years, months = divmod(months, 12) years += more_years if not (1 <= months + value.month <= 12): more_years, months = divmod(months + value.month, 12) months -= value.month years += more_years if months or years: year = value.year + years month = value.month + months # 此月份的的天號不存在轉換后的月份里,將引發一個 ValueError 異常 # 比如,1月份有31天,2月份有29天,我需要1月31號的后一個月的日期,也就是2月31號,但是2月份沒有31號 # 所以會引發一個 ValueError 異常 # 下面這個異常處理就是為了解決這個問題的 try: value = value.replace(year=year, month=month) except ValueError: _, destination_days = calendar.monthrange(year, month) day = value.day - destination_days month += 1 if month > 12: month = 1 year += 1 value = value.replace(year=year, month=month, day=day) return value today = datetime.datetime.today() print today # 今天日期 print conver(today, months=1) # 1月后 print conver(today, months=-1) # 1月前 print conver(today, years=1) # 1年后 # 結果 # datetime.datetime(2015, 11, 20, 16, 26, 21, 593990) # datetime.datetime(2015, 12, 20, 16, 26, 21, 593990) # datetime.datetime(2015, 10, 20, 16, 26, 21, 593990) # datetime.datetime(2016, 11, 20, 16, 26, 21, 593990)
更新中...代碼取自 when.py 的 _add_time 函數部分代碼
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44199.html
摘要:項目地址時間和日期可能涉及到不同的時區格式,同時又經常需要作為時間戳保存,有時候還需要進行一些加減操作,因此處理起來通常會因為方法太多而無從下手。中與時間和日期相關的標準庫有個和。 項目地址:https://git.io/pytips 時間和日期可能涉及到不同的時區、格式,同時又經常需要作為時間戳保存,有時候還需要進行一些加減操作,因此處理起來通常會因為方法太多而無從下手。Python...
摘要:對象表示信息,但是同時和它們所表示的抽象概念行為一致。通過綁定行為和信息,對象提供了可靠獨立的日期抽象。名稱來源于實數在中表示的方式浮點表示。另一方面,對象可以表示很大范圍內的分數,但是不能表示所有有理數。 2.1 引言 來源:2.1 Introduction 譯者:飛龍 協議:CC BY-NC-SA 4.0 在第一章中,我們專注于計算過程,以及程序設計中函數的作用。我們看到了...
摘要:是否則檢驗指定的對象是否存在。由于的模塊實現主要調用庫,所以各個平臺可能有所不同。時間格式時間戳的方式通常來說,時間戳是指格林威治時間年月日時分秒北京時間年月日時分秒起至現在的總秒數。元組方式元組共有個元素,返回的函數主要有,,。 os模塊 os模塊提供了多數操作系統的功能接口函數。當os模塊被導入后,它會自適應于不同的操作系統平臺,根據不同的平臺進行相應的操作,在python編程時,...
摘要:模塊提供的接口與標準庫基本一致。相比于模塊,模塊的接口則更直觀更容易調用。模塊定義了兩個常量這兩個常量分別表示所能表示的最小最大年份。表示時間間隔,即兩個時間點之間的長度。如月份為日期時間的字符串表示。 Python提供了多個內置模塊用于操作日期時間,像 calendar,time,datetime。time模塊提供的接口與C標準庫 time.h 基本一致。相比于 time 模塊,da...
摘要:中提供了一個和的模塊可以用來做格式化日期和時間的。格式化日期通過模塊中方法來格式化日期函數接收時間元組并返回以可讀字符串表示薪資的時間格式的話由參數決定。每日寬度間隔為字符每行的長度為是每星期的行數。 我們可以通過學習在Python中對日期時間的處理,可以在快速的完成工作,比如: 將日期時間作為日志信息的內容輸入 計算某一個功能的執行時間 用日期命名一個文件的名稱 記錄或者展示文件的...
閱讀 1751·2023-04-25 22:42
閱讀 2202·2021-09-22 15:16
閱讀 3486·2021-08-30 09:44
閱讀 485·2019-08-29 16:44
閱讀 3304·2019-08-29 16:20
閱讀 2512·2019-08-29 16:12
閱讀 3387·2019-08-29 16:07
閱讀 667·2019-08-29 15:08