python的標準模組datetime模組,在我們的工作中應用非常頻繁,下面對datetime中常用的方法進行了總結和測試;對每乙個方法都使用了單元測試框架unittest來配合測試。
主要的型別有:
首先要匯入datetime模組:from datetime import datetime, timedelta, timezone
一、自己定義時間格式:1、datetime(2017,2,22,16,5,26);2、datetime.strptime('2017-02-22 16:05:26', '%y-%m-%d %h:%m:%s')
二、將datetime轉化成timestamp格式:datetime(2017,2,22,16,5,26).timestamp()
三、將timestamp轉化成datetime格式:datetime.fromtimestamp(1487750726.0)
四、將datetime轉化成str格式:datetime(2017,2,22,16,5,26).strftime('%y-%m-%d %h:%m:%s')
五、利用timedelta進行時間相加:datetime.strptime('2017-02-22 16:05:26', '%y-%m-%d %h:%m:%s') + timedelta(hours=10, days=2)
六、利用timedelta進行時間相減:datetime.strptime('2017-02-22 14:05:26', '%y-%m-%d %h:%m:%s') - timedelta(hours=1)
八、轉換時區:
utc_datetime = datetime.strptime('2017-02-22 17:05:26', '%y-%m-%d %h:%m:%s').replace(tzinfo=timezone(timedelta(hours=8)))
# 北京時間
bj_datetime = utc_datetime.astimezone(timezone(timedelta(hours=8)))
# 東京時間
dj_datetime = bj_datetime.astimezone(timezone(timedelta(hours=9)))
下面的就是**,testdatetime.py:
#還有測試結果圖(全部測試通過):coding=utf-8
"""testdatetime.py
datetime模組練習
"""import
unittest
from datetime import
datetime, timedelta, timezone
class
testdatetime(unittest.testcase):
deftest_get_datetime(self):
"""指定日期和時間datetime
"""expected = "
2017-02-22 16:05:26
"actual = datetime(2017,2,22,16,5,26)
#print(actual)
self.assertequal(expected, str(actual))
deftest_datetime_translation_timestamp(self):
"""將datetime轉化成timestamp,返回的是秒
"""expected = 1487750726.0actual = datetime(2017,2,22,16,5,26).timestamp()
#print(type(actual))
self.assertequal(expected, actual)
deftest_timestamp_translation_datetime(self):
"""將timestamp轉化成datetime格式
"""expected = "
2017-02-22 16:05:26
"actual = datetime.fromtimestamp(1487750726.0)
#print(actual)
self.assertequal(expected, str(actual))
deftest_str_translation_datetime(self):
"""將str轉化成datetime格式
"""expected = datetime(2017,2,22,16,5,26)
actual = datetime.strptime('
2017-02-22 16:05:26
', '
%y-%m-%d %h:%m:%s')
#print(actual)
self.assertequal(expected, actual)
deftest_datetime_translation_str(self):
"""將datetime轉化成str
"""excepted = '
2017-02-22 16:05:26
'actual = datetime(2017,2,22,16,5,26).strftime('
%y-%m-%d %h:%m:%s')
#print(type(actual))
self.assertequal(excepted, actual)
deftest_datetime_add(self):
"""利用timedelta進行時間相加
"""#
加1小時
excepted1 = datetime.strptime('
2017-02-22 17:05:26
', '
%y-%m-%d %h:%m:%s')
actual1 = datetime.strptime('
2017-02-22 16:05:26
', '
%y-%m-%d %h:%m:%s
') + timedelta(hours=1)
#加2天,10小時
excepted2 = datetime.strptime('
2017-02-25 02:05:26
', '
%y-%m-%d %h:%m:%s')
actual2 = datetime.strptime('
2017-02-22 16:05:26
', '
%y-%m-%d %h:%m:%s
') + timedelta(hours=10, days=2)
self.assertequal(excepted1, actual1)
self.assertequal(excepted2, actual2)
deftest_datetime_plus(self):
"""利用timedelta進行時間相減
"""#
減1小時
excepted1 = datetime.strptime('
2017-02-22 16:05:26
', '
%y-%m-%d %h:%m:%s')
actual1 = datetime.strptime('
2017-02-22 17:05:26
', '
%y-%m-%d %h:%m:%s
') - timedelta(hours=1)
self.assertequal(excepted1, actual1)
deftest_timezone_translation(self):
"""轉換時區
"""utc_datetime = datetime.strptime('
2017-02-22 17:05:26
', '
%y-%m-%d %h:%m:%s
').replace(tzinfo=timezone(timedelta(hours=8)))
#北京時間
bj_datetime = utc_datetime.astimezone(timezone(timedelta(hours=8)))
#東京時間
dj_datetime = bj_datetime.astimezone(timezone(timedelta(hours=9)))
#print(dj_datetime)
self.assertequal((bj_datetime + timedelta(hours=1)).strftime('
%y-%m-%d %h:%m:%s
'), dj_datetime.strftime('
%y-%m-%d %h:%m:%s'))
if__name__ == '
__main__':
unittest.main()
python datetime處理時間
datetime date time都提供了strftime 方法,該方法接收乙個格式字串,輸出日期時間的字串表示。下表是從python手冊中拉過來的,我對些進行了簡單的翻譯 翻譯的有點噢口 格式字元 意義 a 星期的簡寫。如 星期三為web a星期的全寫。如 星期三為wednesday b月份的簡...
python datetime學習筆記
import datetime d datetime.date 2016,7,24 新建乙個日期,注意前面的0不能有 print d 20106 07 24 d datetime.date.today 獲取當前日期 print d print d.year,d.month,d.day print d...
Python datetime模組小結
模組小結如下 另外有time模組小結 from datetime import date,time,datetime,timedelta datetime.now 當前日期元組 datetime.today 當前日期元組 d1 2018 05 09 10 20 15 d2 2018 06 02 08...