Python日期時間Date/Time
Python程序可以處理多種方式的日期和時間。日期格式之間的轉換是一種常見計算機的雜活。 Python的時間和日曆模塊,能幫助處理日期和時間。
Tick是什麼?
時間間隔為浮點數以秒為單位的數字。在特定的時間瞬間自上午12時00分,1970年1月1日(紀元)表示,單位為秒。
Python中可用的流行時間模塊,它提供功能轉換。該功能time.time()返回當前係統時間,因為上午12點,1970年1月1日(時代)。
例子:
#!/usr/bin/python import time; # This is required to include time module. ticks = time.time() print "Number of ticks since 12:00am, January 1, 1970:", ticks
這將產生一個結果如下:
Number of ticks since 12:00am, January 1, 1970: 7186862.73399
日期計算是很容易。不過當日的時代之前,不能以這種形式來表示。在遙遠的將來的日期也不能代表這種方式- 分界點是一段2038年在UNIX和Windows。
什麼是TimeTuple?
Python的時間函數處理時間為9個數字的元組,如下圖所示:
索引 | 字段 | 值 |
---|---|---|
0 | 年(四位數字) | 2015 |
1 | 月份 | 1 - 12 |
2 | 日期 | 1 - 31 |
3 | 小時 | 0 - 23 |
4 | 分鐘 | 0 - 59 |
5 | 秒 | 0 - 61 (60 或 61是閏秒) |
6 | 星期 | 0 - 6 (0 為星期一) |
7 | 一年中的第幾天 | 1 - 366 (Julian日期) |
8 | 夏令時 | -1, 0, 1, -1 表示庫決定DST |
上麵的元組相當於struct_time結構。這種結構具有以下屬性:
索引 | 屬性 | 值 |
---|---|---|
0 | tm_year | 2018 |
1 | tm_mon | 1 - 12 |
2 | tm_mday | 1 - 31 |
3 | tm_hour | 0 - 23 |
4 | tm_min | 0 - 59 |
5 | tm_sec | 0 - 61 (60 或 61 是閏秒) |
6 | tm_wday | 0 to 6 (0 為星期一) |
7 | tm_yday | 1 to 366 (Julian日期) |
8 | tm_isdst | -1, 0, 1, -1 表示庫決定DST |
獲取當前時間 :
轉換一個時刻從秒epoch浮點值轉換成時元組,浮點值傳遞給函數(例如,本地時間)返回時間元組的全部九項有效。
#!/usr/bin/python import time; localtime = time.localtime(time.time()) print "Local current time :", localtime
這將產生下麵的結果,這可以在任何其他像樣形式被格式化:
Local current time : time.struct_time(tm_year=2013, tm_mon=7, tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2, tm_yday=198, tm_isdst=0)
獲取格式化的時間 :
可以隨時根據要求格式化,但簡單的方法來獲取時間,可讀的格式是asctime():
#!/usr/bin/python import time; localtime = time.asctime( time.localtime(time.time()) ) print "Local current time :", localtime
這將產生以下結果:
Local current time : Tue Jan 13 10:17:09 2009
獲取日曆月份:
日曆模塊提供了廣泛的方法,如有年和月的日曆。在這裡,我們打印日曆給定月份(2015年1月):
#!/usr/bin/python import calendar cal = calendar.month(2015, 1) print "Here is the calendar:" print cal;
這將產生以下結果:
Here is the calendar: January 2008 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 31
time模塊:
Python中可用的流行時間模塊,時間之間轉換提供了以下一些函數。下麵是所有可用方法的列表:
SN | 方法及描述 |
---|---|
1 |
time.altzone 當地DST時區的偏移量,如果一個定義在UTC西部秒鐘。這是負值,如果當地的DST時區為UTC東邊(如西歐,包括英國)。如果白天不為零隻用這個。 |
2 |
time.asctime([tupletime]) 接受一個時間元組,並返回一個可讀的24個字符的字符串,如“Tue Dec 11 18:07:14 2015'。 |
3 |
time.clock( ) 返回當前CPU時間為幾秒鐘的浮點數。以測量不同方法的計算成本,time.clock的值比time.time()更有用 |
4 |
time.ctime([secs]) 類似asctimeasctime(localtime(secs)),不帶參數就像asctime() |
5 |
time.gmtime([secs]) 接收表示從epoch秒鐘的瞬間,並返回一個時間元組t及UTC時間。注意:t.tm_isdst始終為0 |
6 |
time.localtime([secs]) 接收表示從epoch秒鐘的瞬間,並返回一個時間元組t與被本地時間(t.tm_isdst是0或1,這取決於是否DST的適用於即時秒通過本地規則) |
7 |
time.mktime(tupletime) 接受表示為一個時間的元組中的本地時間瞬間,並返回浮點值從epoch以秒表示的時刻 |
8 |
time.sleep(secs) 暫停secs秒鐘調用線程 |
9 |
time.strftime(fmt[,tupletime]) 接收表示為一個時間的元組中的本地時間瞬間並返回表示所指定的字符串fmt瞬間的字符串 |
10 |
time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') 根據格式字符串格式化解析str並返回時間元組格式 |
11 |
time.time( ) 返回當前時刻,自時代浮點秒數 |
12 |
time.tzset() 重置所使用的庫例程的時間轉換規則。環境變量TZ指定如何完成此操作。 |
下列是時間time模塊提供兩個重要的屬性:
SN | 屬性及描述 |
---|---|
1 |
time.timezone 屬性time.timezone是從UTC(>0,在美洲;<=0,在大多數歐洲,亞洲,非洲),抵銷了本地時區的秒鐘(不含DST)。 |
2 |
time.tzname 屬性time.tzname是一對語言環境相關的字符串,這是本地時區的名稱。 |
calendar 模塊
日曆calendar模塊提供與日曆相關的功能,包括功能來打印一個文本日曆對於給定的月份或年份。
默認情況下,日曆把星期一作為一周的第一天,周日為最後一天。要改變這種情況,調用calendar.setfirstweekday()函數。
下麵是日曆calendar模塊可用的功能列表:
SN | 方法及描述 |
---|---|
1 |
calendar.calendar(year,w=2,l=1,c=6) 返回為多行字符串的逐年日曆格式化成用c空格分隔的三列。 w是中的每一個日期字符的寬度;每行的長度為21* w +18+2* c。 l為每個星期的行數。 |
2 |
calendar.firstweekday( ) 返回當前設置為每個星期開始工作日。默認情況下,當先導入calendar,這是0,意思是星期一。 |
3 |
calendar.isleap(year) 如果今年是閏年返回true,否則為false。 |
4 |
calendar.leapdays(y1,y2) 返回範圍內的總數在range(y1,y2)。 |
5 |
calendar.month(year,month,w=2,l=1) 返回為多行字符串與日曆月month年year,每周一條線加上兩個標題行。 w是中的每一個日期字符的寬度;每行的長度為7* W +6。 l為每個星期的行數。 |
6 |
calendar.monthcalendar(year,month) 返回整數的列表。每個子列表表示一個星期。月month年year都設置為0;在一個月內,day都被設置為一天,月份,1及以上的數字。 |
7 |
calendar.monthrange(year,month) 返回兩個整數。第一個是星期幾月month年year的第一天的代碼;第二個是在所述月份的天數。星期代碼是0(星期一)至6日(星期日);月數是1〜12。 |
8 |
calendar.prcal(year,w=2,l=1,c=6) 打印類似calendar.calendar(year,w,l,c). |
9 |
calendar.prmonth(year,month,w=2,l=1) 打印類似calendar.month(year,month,w,l). |
10 |
calendar.setfirstweekday(weekday) 將每個星期的第一天工作日代碼設置。星期代碼是0(星期一)至6日(星期日)。 |
11 |
calendar.timegm(tupletime) time.gmtime的反向:接受一個時刻在時間元組的形式,並返回同一時刻為從epoch浮點秒數。 |
12 |
calendar.weekday(year,month,day) 返回給定日期的星期代碼。星期代碼0(星期一)至6日(星期日);月份數字代碼為1(一月)到12(12月)。 |
其它模塊和函數:
如果有興趣,那麼在這裡也要找到其他重要的模塊和功能,如:日期和時間在Python使用: