Python 的簡單時間處理


又花了點時間來研究一下 Python 上的時間處理.
這一次的研究也和上篇提到的一樣,主要是想重寫 Perl 的某些東西吧.
下面的代碼模仿了大多 Perl 程式中對時間的分析.
另外還有就是測試了類似於 PHP 中的時間和秒的處理(主要還是互轉之類的)
當然,由於小弟對這方面了解還淺,所以暫時實現的比較簡單,請指教

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
Author : Zeuxis Lo (傻心 - 窮等人家)
Pub-Date: 4/7/2009 13:07
"""

# 定義變數 (時區)
timeZone = 8

# 載入模組
import time

# 輸出檔頭
print "Content-type: text/html"
print

"""
實現 Perl 的類似寫法
"""

# 取得時間 (依 本地)
year, month, day, hour, min, sec, wday, ydate, isdst = time.localtime()

# 顯示雙位數 (當遇見是單位數時)
# 此處可寫為 month = '0' + str(month)
# -----------------------------------
if month < 10: month = "0%s" % month
if day < 10: day = "0%s" % day
if hour < 10: hour = "0%s" % hour
if min < 10: min = "0%s" % min
if sec < 10: sec = "0%s" % sec

# 輸出時間格式
print "%s-%s-%s %s:%s:%s <br />" % (year, month, day, hour, min, sec)

"""
簡化寫法
--------
相關的參數參考:
http://docs.python.org/library/time.html#time.struct_time
"""

# 以 Python 簡化 Perl 的寫法
print time.strftime("%Y-%m-%d %H:%M:%S <br />", time.localtime())

# 取得時間 (依 UTC) [需定義時區]
print time.strftime("%Y-%m-%d %H:%M:%S <br />", time.gmtime(time.time()+timeZone*3600))

"""
嘗試實現類似於 PHP 的秒和時間互轉
--------
相關的參考資料:
http://bytes.com/groups/python/160549-time-mktime-problem
http://blog.csdn.net/JGood/archive/2009/06/23/4292912.aspx
"""

# 指定時間以取得一個格式化的時間字串,並將其轉為秒 (1246686780.0)
print time.mktime(time.strptime('2009-07-04 13:53:00', '%Y-%m-%d %H:%M:%S'))
print "<br />"

# 將剛才得到的秒轉化為時間格式 (以 本地 和 UTC 兩種作法測試)
print time.strftime("%Y-%m-%d %H:%M:%S <br />", time.localtime(1246686780.0))
print time.strftime("%Y-%m-%d %H:%M:%S <br />", time.gmtime(1246686780.0+timeZone*3600))