[Python] - 日期和時間

文章從簡書轉入,只因它已不再是以前的簡書


image

Only I can change my life. No one can do it for me.
只有我可以改變我的命運,沒有人可以幫我做。


Python 提供了一個 time 和 calendar 模塊可以用於格式化日期和時間

時間間隔是以秒爲單位的浮點小數

每個時間戳都以自從1970年1月1日午夜(曆元)經過了多長時間來表示


例如:time 模塊下函數time.time()用於獲取當前時間戳
如下實例:

import time;  # 引入time模塊

ticks = time.time()
print ("當前時間戳爲:", ticks)

實例輸出結果:

當前時間戳爲: 1509694006.0394611

時間元組

用一個元組裝起來的9組數字處理時間

字段 屬性
4位數年 tm_year 2008
tm_mon 1 到 12
tm_mday 1到31
小時 tm_hour 0到23
分鐘 tm_min 0到59
tm_sec 0到61 (60或61 是閏秒)
一週的第幾日 tm_wday 0到6 (0是週一)
一年的第幾日 tm_yday 1到366 (儒略曆)
夏令時 tm_isdst -1, 0, 1, -1是決定是否爲夏令時的旗幟

獲取當前時間

從返回浮點數的時間輟方式向時間元組轉換,只要將浮點數傳遞給如localtime之類的函數

import time

localtime = time.localtime(time.time())
print ("本地時間爲 :", localtime)

輸出結果:

本地時間爲 : time.struct_time(tm_year=2017, tm_mon=11, tm_mday=3, tm_hour=15, tm_min=29, tm_sec=18, tm_wday=4, tm_yday=307, tm_isdst=0)

獲取格式化的時間

根據需求選取各種格式,但是最簡單的獲取可讀的時間模式的函數是asctime()

import time

localtime = time.asctime( time.localtime(time.time()) )
print ("本地時間爲 :", localtime)

輸出結果:

本地時間爲 : Fri Nov  3 15:36:23 2017

格式化日期

使用 time 模塊的 strftime 方法來格式化日期

格式

time.strftime(format[, t])

實例:

import time

# 格式化成2016-03-20 11:45:39形式
print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

# 格式化成Sat Mar 28 22:24:24 2016形式
print (time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))

# 將格式字符串轉換爲時間戳
a = "Sat Mar 28 22:24:24 2016"
print (time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y")))

實例輸出結果:

2017-11-03 15:37:17
Fri Nov 03 15:37:17 2017
1459175064.0

python中時間日期格式化符號

符號 描述
%y 兩位數的年份表示(00-99)
%Y 四位數的年份表示(000-9999)
%m 月份(01-12)
%d 月內中的一天(0-31)
%H 24小時制小時數(0-23)
%I 12小時制小時數(01-12)
%M 分鐘數(00=59)
%S 秒(00-59)
%a 本地簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化的月份名稱
%B 本地完整的月份名稱
%c 本地相應的日期表示和時間表示
%j 年內的一天(001-366)
%p 本地A.M.或P.M.的等價符
%U 一年中的星期數(00-53)星期天爲星期的開始
%w 星期(0-6),星期天爲星期的開始
%W 一年中的星期數(00-53)星期一爲星期的開始
%x 本地相應的日期表示
%X 本地相應的時間表示
%Z 當前時區的名稱
%% %號本身

獲取某月日曆

Calendar模塊有很廣泛的方法用來處理年曆和月曆

import calendar

cal = calendar.month(2016, 1)
print ("以下輸出2016年1月份的日曆:")
print (cal)

實例輸出結果:

以下輸出2017年11月份的日曆:
   November 2017
Mo Tu We Th Fr Sa Su
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

獲取某一年的日曆

返回一個多行字符串格式的year年年曆

print(calendar.calendar(2017,w=2,l=1,c=6))

實例輸出結果:

                                  2017

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                   1             1  2  3  4  5             1  2  3  4  5
 2  3  4  5  6  7  8       6  7  8  9 10 11 12       6  7  8  9 10 11 12
 9 10 11 12 13 14 15      13 14 15 16 17 18 19      13 14 15 16 17 18 19
16 17 18 19 20 21 22      20 21 22 23 24 25 26      20 21 22 23 24 25 26
23 24 25 26 27 28 29      27 28                     27 28 29 30 31
30 31

       April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1  2       1  2  3  4  5  6  7                1  2  3  4
 3  4  5  6  7  8  9       8  9 10 11 12 13 14       5  6  7  8  9 10 11
10 11 12 13 14 15 16      15 16 17 18 19 20 21      12 13 14 15 16 17 18
17 18 19 20 21 22 23      22 23 24 25 26 27 28      19 20 21 22 23 24 25
24 25 26 27 28 29 30      29 30 31                  26 27 28 29 30

        July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1  2          1  2  3  4  5  6                   1  2  3
 3  4  5  6  7  8  9       7  8  9 10 11 12 13       4  5  6  7  8  9 10
10 11 12 13 14 15 16      14 15 16 17 18 19 20      11 12 13 14 15 16 17
17 18 19 20 21 22 23      21 22 23 24 25 26 27      18 19 20 21 22 23 24
24 25 26 27 28 29 30      28 29 30 31               25 26 27 28 29 30
31

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                   1             1  2  3  4  5                   1  2  3
 2  3  4  5  6  7  8       6  7  8  9 10 11 12       4  5  6  7  8  9 10
 9 10 11 12 13 14 15      13 14 15 16 17 18 19      11 12 13 14 15 16 17
16 17 18 19 20 21 22      20 21 22 23 24 25 26      18 19 20 21 22 23 24
23 24 25 26 27 28 29      27 28 29 30               25 26 27 28 29 30 31
30 31

其他 Calendar 用法

  • 返回當前每週起始日期的設置,首次載入caendar模塊時返回0,即星期一
calendar.firstweekday()
  • 是否閏年,是閏年返回True,否則爲false
calendar.isleap(year)
  • 返回給定日期的日期碼。0(星期一)到6(星期日)。月份爲 1(一月) 到 12(12月)
calendar.weekday(year,month,day)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章