對于像'Wed, 11 Apr 2012 09:37:05 +0800'的時間格式化可如下解:
成都創(chuàng)新互聯(lián)不只是一家網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司;我們對營銷、技術(shù)、服務(wù)都有自己獨特見解,公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務(wù)!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的成都網(wǎng)站制作、成都網(wǎng)站建設(shè)質(zhì)量和服務(wù)品質(zhì),在得到用戶滿意的同時,也能得到同行業(yè)的專業(yè)認可,能夠為行業(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術(shù)創(chuàng)新,服務(wù)升級,滿足企業(yè)一站式全網(wǎng)整合營銷推廣需求,讓再小的品牌網(wǎng)站設(shè)計也能產(chǎn)生價值!
date='Wed,?11?Apr?2012?09:37:05?+0800'
dd=datetime.datetime.strptime(date,'%a,?%d?%b?%Y?%H:%M:%S?%z')
dd.strftime('%Y-%m-%d?%H:%M:%S')
Python格式化日期時間的函數(shù)為datetime.datetime.strftime();由字符串轉(zhuǎn)為日期型的函數(shù)為:datetime.datetime.strptime(),兩個函數(shù)都涉及日期時間的格式化字符串,列舉如下:
%a?Abbreviated?weekday?name???
%A?Full?weekday?name???
%b?Abbreviated?month?name???
%B?Full?month?name???
%c?Date?and?time?representation?appropriate?for?locale???
%d?Day?of?month?as?decimal?number?(01?-?31)???
%H?Hour?in?24-hour?format?(00?-?23)???
%I?Hour?in?12-hour?format?(01?-?12)???
%j?Day?of?year?as?decimal?number?(001?-?366)???
%m?Month?as?decimal?number?(01?-?12)???
%M?Minute?as?decimal?number?(00?-?59)???
%p?Current?locale's?A.M./P.M.?indicator?for?12-hour?clock???
%S?Second?as?decimal?number?(00?-?59)???
%U?Week?of?year?as?decimal?number,?with?Sunday?as?first?day?of?week?(00?-?51)???
%w?Weekday?as?decimal?number?(0?-?6;?Sunday?is?0)???
%W?Week?of?year?as?decimal?number,?with?Monday?as?first?day?of?week?(00?-?51)???
%x?Date?representation?for?current?locale???
%X?Time?representation?for?current?locale???
%y?Year?without?century,?as?decimal?number?(00?-?99)???
%Y?Year?with?century,?as?decimal?number???
%z,?%Z?Time-zone?name?or?abbreviation;?no?characters?if?time?zone?is?unknown???
%%?Percent?sign
datetime.timedelta對象代表兩個時間之間的時間差,兩個date或datetime對象相減就可以返回一個timedelta對象。
利用以下數(shù)據(jù)進行說明:
如果我們發(fā)現(xiàn)時間相關(guān)內(nèi)容的變量為int,float,str等類型,不方便后面的分析,就需要使用該函數(shù)轉(zhuǎn)化為常用的時間變量格式:pandas.to_datetime
轉(zhuǎn)換得到的時間單位如下:
如果時間序列格式不統(tǒng)一,pd.to_datetime()的處理方式:
當然,正確的轉(zhuǎn)換是這樣的:
第一步:to_datetime()
第二步:astype(datetime64[D]),astype(datetime64[M])
本例中:
order_dt_diff必須是Timedelta('0 days 00:00:00')格式,可能是序列使用了diff()
或者pct_change()。
前者往往要通過'/np.timedelta'去掉單位days。后者其實沒有單位。
假如我們要統(tǒng)計某共享單車一天內(nèi)不同時間點的用戶使用數(shù)據(jù),例如
還有其他維度的提取,年、月、日、周,參見:
Datetime properties
注意 :.dt的對象必須為pandas.Series,而不可以是Series中的單個元素
時間格式轉(zhuǎn)換分為兩種,時間轉(zhuǎn)換為字符串和字符串轉(zhuǎn)換為時間,具體代碼例子如下:
1?import?datetime
2?import?time
3?#?日期轉(zhuǎn)換為字符串,使用strftime()函數(shù)
4?#?time.strftime(format[,?t])
5
6?print?datetime.datetime.now()
7?print?datetime.datetime.now().strftime("%Y-%m-%d
%H:%M:%S")
8?print?datetime.datetime.now().strftime("%b
%d?%Y?%H:%M:%S")
9?print?datetime.datetime.now().strftime("%c
%d?%Y?%H:%M:%S")
10?#?字符串轉(zhuǎn)換為日期,使用strptime()函數(shù)
11?t?=?(2009,?2,?17,?8,?3,?38,?1,?48,?0)
12?t?=?time.mktime(t)
13?print?time.strftime("%b?%d?%Y?%H:%M:%S",time.gmtime(t))
14?print?time.strftime("%Y-%m-%d?%H:%M:%S",time.gmtime(t))
注:格式字符說明:
python中時間日期格式化符號:
%y
兩位數(shù)的年份表示(00-99)
%Y
四位數(shù)的年份表示(000-9999)
%m
月份(01-12)
%d
月內(nèi)中的一天(0-31)
%H
24小時制小時數(shù)(0-23)
%I
12小時制小時數(shù)(01-12)
%M
分鐘數(shù)(00=59)
%S
秒(00-59)
%a
本地簡化星期名稱
%A
本地完整星期名稱
%b
本地簡化的月份名稱
%B
本地完整的月份名稱
%c
本地相應(yīng)的日期表示和時間表示
%j
年內(nèi)的一天(001-366)
%p
本地A.M.或P.M.的等價符
%U
一年中的星期數(shù)(00-53)星期天為星期的開始
%w
星期(0-6),星期天為星期的開始
%W
一年中的星期數(shù)(00-53)星期一為星期的開始
%x
本地相應(yīng)的日期表示
%X
本地相應(yīng)的時間表示
%Z
當前時區(qū)的名稱
%%
%號本身
這需求折騰了我半天..
import time
import datetime as datetime
def late_time(time2):
# 先獲得時間數(shù)組格式的日期
#time2是外部傳入的任意日期
now_time = datetime.datetime.strptime(time2, '%Y-%m-%d')
#如需求是當前時間則去掉函數(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