Python,datetime模組例項

2022-07-12 09:09:11 字數 4354 閱讀 1592

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...