【310】◀▶ Python 日期和時間

參考:html


01   datetime.datetime 包含 date 對象和 time 對象的全部信息。
02   datetime.date 包含年月日。
03   datetime.time 包含一天的時分秒信息。
04   datetime.timedelta
用來指定一個時間間隔,表示兩個日期或者時間的不一樣。
05   time 模塊  

序號 類名稱  

功能說明python

  語法 & 舉例
01 datetime.datetime 對象  

====<<<< Description>>>>====app

datetime 模塊下 的 datetime 對象,包含 date 對象和 time 對象的全部信息。
----------------------------------------------------------------------------------spa

====<<<< Syntax >>>>====.net

datetime.datetime (year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
----------------------------------------------------------------------------------code

====<<<< Parameters >>>>====orm

◈  year:必須。MINYEAR <= year <= MAXYEAR
◈  month:必須。1 <= month <= 12
◈  day:必須。1 <= day <= 365/366
◈  hour:默認 0。0 <= hour < 24
◈  minute:默認 0。0 <= minute < 60
◈  second:默認 0。0 <= second < 60
◈  microsecond:默認 0。0 <= microsecond < 1000000
----------------------------------------------------------------------------------htm

====<<<< Methods >>>>====對象

◈  datetime.today ():返回如今的當地時間。
◈  datetime.now (tz=None):返回本地當前的日期和時間。若是可選的參數 tz 爲 None 或者沒有指定,就如同today()。
◈  datetime.utcnow ():返回如今的 UTC 時間。

◈  datetime.date ():返回相同年月日的 date 對象。
◈  datetime.time ():返回相同時分秒的 time 對象。
◈  datetime.replace (year=self.year, month=self.month, day=self.day, hour=self.hour, minute=self.minute, second=self.second, microsecond=self.microsecond, tzinfo=self.tzinfo, * fold=0):返回一個除了發生變化的屬性外其餘同樣的 datetime 。
◈  datetime.weekday ():返回一個整型,Monday 是 0,Sunday 是 6,一週中的第幾天。

◈  datetime.timetuple ():返回一個結構體,裏面包含以下:time.struct_time(tm_year=2017, tm_mon=2, tm_mday=12, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=43, tm_isdst=-1)。其中 tm_yday 爲一年中的第幾天。
----------------------------------------------------------------------------------blog

====<<<< Attributes >>>>====

◈  datetime.min:返回值爲 datetime,最小的。
◈  datetime.max:返回值爲 datetime,最大的。
◈  datetime.year:年
◈  datetime.month:月
◈  datetime.day:日
◈  datetime.hour:時
◈  datetime.minute:分
◈  datetime.second:秒
◈  datetime.microsecond:微秒

 
>>> import datetime

# 調用日期信息
>>> d1 = datetime.datetime.today()
>>> print(d1)
2018-04-14 22:34:59.486000
>>> d1.year
2018
>>> d1.month
4
>>> d1.day
14
>>> d1.date()
datetime.date(2018, 4, 14)
>>> d1.time()
datetime.time(22, 34, 59, 486000)

# 日期計算
>>> d2 = d1.replace(year=2019, month=2, day=3)
>>> d2
datetime.datetime(2019, 2, 3, 22, 34, 59, 486000)
>>> dd = d2 - d1
>>> dd.days
295

# 構建日期
>>> d3 = datetime.datetime(2007, 9, 1)
>>> d3
datetime.datetime(2007, 9, 1, 0, 0)

# 一年中的第幾天
>>> today = datetime.datetime.today()
>>> today.timetuple()
time.struct_time(tm_year=2018, tm_mon=6, tm_mday=1, tm_hour=10, 
tm_min=34, tm_sec=37, tm_wday=4, tm_yday=152, tm_isdst=-1)
>>> today.timetuple().tm_yday
152

根據 string 來建立 datetime,經過 datetime.strptime() 實現

下面代碼讀取格式以下的文本 「2019-11-10 09:08:07」

# "%Y-%m-%d %H:%M:%S"
# 以上爲文本格式

ws = []
fn = r"D:\OneDrive - UNSW\tweets_flu.csv"
df = pd.read_csv(fn)
for i in range(len(df)):
    t = df.iloc[i]['created_at']
    w = datetime.strptime(t, "%Y-%m-%d %H:%M:%S").strftime("%W")
    ws.append(w)

 


 

 02 datetime.date 對象  

====<<<< Description>>>>====

datetime 模塊下 的 date 對象,包含年月日。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

datetime.date (year, month, day)
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  year:必須。MINYEAR <= year <= MAXYEAR
◈  month:必須。1 <= month <= 12
◈  day:必須。1 <= day <= 365/366
----------------------------------------------------------------------------------

====<<<< Methods >>>>====

◈  date.today ():返回如今的當地時間。
◈  date.replace (year=self.year, month=self.month, day=self.day):返回一個除了發生變化的屬性外其餘同樣的 date 。
◈  date.weekday ():返回一個整型,Monday 是 0,Sunday 是 6,一週中的第幾天。
----------------------------------------------------------------------------------

====<<<< Attributes >>>>====

◈  date.min:返回值爲 date,最小的。
◈  date.max:返回值爲 date,最大的。
◈  date.year:年
◈  date.month:月
◈  date.day:日

 
>>> d1 = datetime.date.today()
>>> d1.year
2018
>>> d2 = d1.replace(month=4, day=20)
>>> d2
datetime.date(2018, 4, 20)
>>> d1
datetime.date(2018, 4, 14)
>>> (d2-d1).days
6
>>> d3 = datetime.date(2018,5,3)
>>> d3
datetime.date(2018, 5, 3)

 

03 datetime.time 對象  

====<<<< Description>>>>====

datetime 模塊下 的 time 對象,包含一天的時分秒信息。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

datetime.time (hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  hour:默認 0。0 <= hour < 24
◈  minute:默認 0。0 <= minute < 60
◈  second:默認 0。0 <= second < 60
◈  microsecond:默認 0。0 <= microsecond < 1000000
----------------------------------------------------------------------------------

====<<<< Methods >>>>====

◈  datetime.replace (hour=self.hour, minute=self.minute, second=self.second, microsecond=self.microsecond, tzinfo=self.tzinfo, * fold=0):返回一個除了發生變化的屬性外其餘同樣的 time 。
----------------------------------------------------------------------------------

====<<<< Attributes >>>>====

◈  time.min:返回值爲 time,最小的。
◈  time.max:返回值爲 time,最大的。
◈  time.hour:時
◈  time.minute:分
◈  time.second:秒
◈  time.microsecond:微秒

   
 04  datetime.timedelta 對象  

====<<<< Description>>>>====

datetime 模塊下 的 datedelta 對象,用來指定一個時間間隔,表示兩個日期或者時間的不一樣。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

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

====<<<< Parameters >>>>====

◈  hour:默認 0。0 <= hour < 24
◈  minute:默認 0。0 <= minute < 60
◈  second:默認 0。0 <= second < 60
◈  microsecond:默認 0。0 <= microsecond < 1000000
----------------------------------------------------------------------------------

====<<<< Attributes >>>>====

◈  timedelta.days:天數
◈  timedelta.seconds:秒數
◈  timedelta.microseconds:微秒數

 
>>> d1 = datetime.date(1987,8,31)
>>> d2 = datetime.date.today()
>>> dd = d2 - d1
>>> dd.days
11184

>>> d1 = datetime.datetime(1987,8,31)
>>> d2 = datetime.datetime.today()
>>> dd = d2 - d1
>>> dd.days
11184
05 time 模塊  

參考:Python 日期和時間

time 模塊 能夠用於格式化日期和時間。
----------------------------------------------------------------------------------

====<<<< Methods >>>>====
◈  time.asctime ( [t] ):字符串顯示時間。'Fri Jun 08 16:55:40 2018'
◈  time.gmtime ( [secs] ):UTC 時間,返回值爲 struct_time 。    
  tm_year=2018
  tm_mon=6
  tm_mday=8
  tm_hour=13
  tm_min=42
  tm_sec=58
  tm_wday=4
  tm_yday=159
  tm_isdst=0,Daylight Saving Time,是否夏令時

◈  time.localtime ( [secs] ):當地時間,,返回值爲 struct_time
◈  time.strftime ( format[, t] ):格式化字符串顯示時間。
◈  time.strptime ( string[, format] ):解析時間字符串,返回值爲 struct_time 。字符串格式爲 "%a %b %d %H:%M:%S %Y"。
◈  time.sleep ( secs ):暫停的秒數。(能夠是小數)

   
# 自動識別是本世紀仍是上個世紀
>>> time.strptime("12,11,15", "%y,%m,%d")
time.struct_time(tm_year=2012, tm_mon=11, tm_mday=15, tm_hour=0, 
tm_min=0, tm_sec=0, tm_wday=3, tm_yday=320, tm_isdst=-1)
>>> time.strptime("97 Jun 8", "%y %b %d")
time.struct_time(tm_year=1997, tm_mon=6, tm_mday=8, tm_hour=0, 
tm_min=0, tm_sec=0, tm_wday=6, tm_yday=159, tm_isdst=-1)
>>> time.strptime("30 Nov 00", "%d %b %y")
time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, 
tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=6, tm_mday=8, tm_hour=13, 
tm_min=42, tm_sec=58, tm_wday=4, tm_yday=159, tm_isdst=0)
>>> time.gmtime()
time.struct_time(tm_year=2018, tm_mon=6, tm_mday=8, tm_hour=5, 
tm_min=43, tm_sec=19, tm_wday=4, tm_yday=159, tm_isdst=0)
>>> time.localtime().tm_yday
159
>>> time.asctime()
'Fri Jun 08 16:55:40 2018'
>>> time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime())
'Fri, 08 Jun 2018 17:02:18 +0000'

 

           

將字符串轉換爲 datetime

參考:Converting string into datetime

參考:strftime() and strptime() Behavior

代碼:(strptime 就是 string parse time)

from datetime import datetime

a = "Wed Oct 10 20:19:24 +0000 2018"

b = datetime.strptime(a, "%a %b %d %H:%M:%S %z %Y")

print(b.year, b.month, b.day, b.hour, b.minute, b.tzinfo)

# output
# 2018 10 10 20 19 UTC
相關文章
相關標籤/搜索