time 模塊常用的與時間相關(guān)的類和函數(shù):
為薩嘎等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及薩嘎網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、薩嘎網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
time 模塊的 struct_time 類代表一個時間對象,可以通過 索引和屬性名 訪問值。 對應(yīng)關(guān)系如下:
索引 —— 屬性 值
0 —— tm_year(年) 如:1945
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
6 —— tm_wday(周) 0 ~ 6
7 —— tm_yday(一年內(nèi)第幾天) 1 ~ 366
8 —— tm_isdst(夏時令) -1、0、1
localtime() 表示當(dāng)前時間,返回類型為 struct_time 對象 ,示例如下所示:
輸出結(jié)果:
time()——返回當(dāng)前時間的時間戳
gmtime([secs])——將時間戳轉(zhuǎn)換為格林威治天文時間下的 struct_time,可選參數(shù) secs 表示從 epoch 到現(xiàn)在的秒數(shù),默認(rèn)為當(dāng)前時間
localtime([secs])——與 gmtime() 相似,返回當(dāng)?shù)貢r間下的 struct_time
mktime(t) localtime() 的反函數(shù)
asctime([t]) 接收一個 struct_time 表示的時間,返回形式為:Mon Dec 2 08:53:47 2019 的字符串
ctime([secs]) ctime(secs) 相當(dāng)于 asctime(localtime(secs))
strftime(format[, t]) 格式化日期,接收一個 struct_time 表示的時間,并返回以可讀字符串表示的當(dāng)?shù)貢r間
sleep(secs) 暫停執(zhí)行調(diào)用線程指定的秒數(shù)
altzone 本地 DST 時區(qū)的偏移量,以 UTC 為單位的秒數(shù)
timezone 本地(非 DST)時區(qū)的偏移量,UTC 以西的秒數(shù)(西歐大部分地區(qū)為負(fù),美國為正,英國為零)
tzname 兩個字符串的元組:第一個是本地非 DST 時區(qū)的名稱,第二個是本地 DST 時區(qū)的名稱
基本使用如下所示:
strftime 函數(shù)日期格式化符號說明如下所示:
python格式化日期的方法:可以利用time.asctime(time.local(time.time()))函數(shù)來格式化日期。如果我們要獲取當(dāng)前日期,可以利用時間函數(shù)time()來獲取。
這需求折騰了我半天..
import time
import datetime as datetime
def late_time(time2):
# 先獲得時間數(shù)組格式的日期
#time2是外部傳入的任意日期
now_time = datetime.datetime.strptime(time2, '%Y-%m-%d')
#如需求是當(dāng)前時間則去掉函數(shù)參數(shù)改寫 ? ? ?為datetime.datetime.now()
threeDayAgo = (now_time - datetime.timedelta(days =30))
# 轉(zhuǎn)換為時間戳
timeStamp =int(time.mktime(threeDayAgo.timetuple()))
# 轉(zhuǎn)換為其他字符串格式
otherStyleTime = threeDayAgo.strftime("%Y-%m-%d")
return otherStyleTime
a = late_time("2019-3-30")
print(a)# 打印2018-02-28
python中的時間模塊主要有time, datetime。
I, time模塊
time模塊中包含了四種時間格式:
float格式,即給定時間相對于epoch增加的秒數(shù)
tuple格式,一個九元組 (tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst)
string格式,'Mon Feb 6 15:00:06 2012'
format格式,以指定的格式生成的時間
針對這幾種時間格式,time模塊提供了函數(shù)在格式之間相互轉(zhuǎn)換。
asctime(tuple) -string
ctime(float) -string
gmtime(float) -tuple
localtime(float) -tuple
mktime(tuple) -float
strftime(format, tuple) -format string
strptime(formatstring, format) -tuple
time() - float
上述函數(shù)中,除了time()函數(shù)直接返回當(dāng)前時間相對于epoch的秒數(shù)外,其他函數(shù)都要求有時間的輸入,如果沒有輸入,則默認(rèn)使用當(dāng)前時間。
另外,strftime和strptime中的format使用下面的格式:
%a 英文星期簡寫
%A 英文星期的完全
%b 英文月份的簡寫
%B 英文月份的完全
%c 顯示本地日期時間
%d 日期,取1-31
%H 小時, 0-23
%I 小時, 0-12
%m 月, 01 -12
%M 分鐘,1-59
%j 年中當(dāng)天的天數(shù)
%w 顯示今天是星期幾
%W 第幾周
%x 當(dāng)天日期
%X 本地的當(dāng)天時間
%y 年份 00-99間
%Y 年份的完整拼寫
%S 秒(00-59)
除了上述的時間轉(zhuǎn)換函數(shù)之外,模塊還提供了下面的函數(shù):
clock() 返回進(jìn)程的創(chuàng)建時間,以秒計(jì)數(shù)的float
sleep(float) sleep一段時間,以秒計(jì)數(shù)
tzset() 更改時區(qū)
II, datetime
datetime模塊定義了下面這幾個類:
datetime.date:表示日期的類。常用的屬性有year, month, day;datetime.time:表示時間的類。常用的屬性有hour, minute, second, microsecond;datetime.datetime:表示日期時間。datetime.timedelta:表示時間間隔,即兩個時間點(diǎn)之間的長度。datetime.tzinfo:與時區(qū)有關(guān)的相關(guān)信息。(這里不詳細(xì)充分討論該類,感興趣的童鞋可以參考python手冊)
注 :上面這些類型的對象都是不可變(immutable)的。
下面詳細(xì)介紹這些類的使用方式。
date類
date類表示一個日期。日期由年、月、日組成(地球人都知道~~)。date類的構(gòu)造函數(shù)如下:
class datetime.date(year, month, day):參數(shù)的意義就不多作解釋了,只是有幾點(diǎn)要注意一下:
year的范圍是[MINYEAR, MAXYEAR],即[1, 9999];month的范圍是[1, 12]。(月份是從1開始的,不是從0開始的~_~);day的最大值根據(jù)給定的year, month參數(shù)來決定。例如閏年2月份有29天;
date類定義了一些常用的類方法與類屬性,方便我們操作:
date.max、date.min:date對象所能表示的最大、最小日期;date.resolution:date對象表示日期的最小單位。這里是天。date.today():返回一個表示當(dāng)前本地日期的date對象;date.fromtimestamp(timestamp):根據(jù)給定的時間戮,返回一個date對象;datetime.fromordinal(ordinal):將Gregorian日歷時間轉(zhuǎn)換為date對象;(Gregorian Calendar :一種日歷表示方法,類似于我國的農(nóng)歷,西方國家使用比較多,此處不詳細(xì)展開討論。)