㈠ python中處理時間的幾種方法小結
python中的時間模塊主要有time, datetime。
I, time模塊
time模塊中包含了四種時間格式:
float格式,即給定時間相對於epoch增加的秒數
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模塊提供了函數在格式之間相互轉換。
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
上述函數中,除了time()函數直接返回當前時間相對於epoch的秒數外,其他函數都要求有時間的輸入,如果沒有輸入,則默認使用當前時間。
另外,strftime和strptime中的format使用下面的格式:
%a 英文星期簡寫
%A 英文星期的完全
%b 英文月份的簡寫
%B 英文月份的完全
%c 顯示本地日期時間
%d 日期,取1-31
%H 小時, 0-23
%I 小時, 0-12
%m 月, 01 -12
%M 分鍾,1-59
%j 年中當天的天數
%w 顯示今天是星期幾
%W 第幾周
%x 當天日期
%X 本地的當天時間
%y 年份 00-99間
%Y 年份的完整拼寫
%S 秒(00-59)
除了上述的時間轉換函數之外,模塊還提供了下面的函數:
clock() 返回進程的創建時間,以秒計數的float
sleep(float) sleep一段時間,以秒計數
tzset() 更改時區
II, datetime
datetime模塊定義了下面這幾個類:
datetime.date:表示日期的類。常用的屬性有year, month, day;datetime.time:表示時間的類。常用的屬性有hour, minute, second, microsecond;datetime.datetime:表示日期時間。datetime.timedelta:表示時間間隔,即兩個時間點之間的長度。datetime.tzinfo:與時區有關的相關信息。(這里不詳細充分討論該類,感興趣的童鞋可以參考python手冊)
注 :上面這些類型的對象都是不可變(immutable)的。
下面詳細介紹這些類的使用方式。
date類
date類表示一個日期。日期由年、月、日組成(地球人都知道~~)。date類的構造函數如下:
class datetime.date(year, month, day):參數的意義就不多作解釋了,只是有幾點要注意一下:
year的范圍是[MINYEAR, MAXYEAR],即[1, 9999];month的范圍是[1, 12]。(月份是從1開始的,不是從0開始的~_~);day的最大值根據給定的year, month參數來決定。例如閏年2月份有29天;
date類定義了一些常用的類方法與類屬性,方便我們操作:
date.max、date.min:date對象所能表示的最大、最小日期;date.resolution:date對象表示日期的最小單位。這里是天。date.today():返回一個表示當前本地日期的date對象;date.fromtimestamp(timestamp):根據給定的時間戮,返回一個date對象;datetime.fromordinal(ordinal):將Gregorian日歷時間轉換為date對象;(Gregorian Calendar :一種日歷表示方法,類似於我國的農歷,西方國家使用比較多,此處不詳細展開討論。)
㈡ 編寫Python程序完成以下要求:
㈢ python問題 用eval(input)怎麼把分鍾換算成時間和天
#一年等於365*24*60分鍾
#一天等於24*60分鍾
# 那麼100000000分鍾等於
#years=1000000000/(365*24*60)=1902
minutes=input('請輸入分鍾數')
minutes=eval(minutes)
years=minutes/(365*24*60)
days=minutes/(24*60)
print('years=',years,'days=',days)
'''
input返回str字元串的數字,要用eval去掉'',變成整數類型,再除即可
但我覺得這書印錯了吧,怎麼214 days,都有1902年了,才214天?應該是1902*365=694444天
'''
㈣ Python函數將秒到分鍾,小時,天問題,怎麼解決
為了美化日誌輸出程序執行的總時間,同時人們能夠快速獲取所需要的信息,需要把輸出的秒數轉換成 228 days, 22 hour, 9 min,39.0 sec 這樣的格式。
因為考慮到判斷的重復型,這個函數運用遞歸的思維方式編寫的。
[python]view plain
#coding:utf8
importtime
importmath
defchangeTime(allTime):
day=24*60*60
hour=60*60
min=60
ifallTime<60:
return"%dsec"%math.ceil(allTime)
elifallTime>day:
days=divmod(allTime,day)
return"%ddays,%s"%(int(days[0]),changeTime(days[1]))
elifallTime>hour:
hours=divmod(allTime,hour)
return'%dhours,%s'%(int(hours[0]),changeTime(hours[1]))
else:
mins=divmod(allTime,min)
return"%dmins,%dsec"%(int(mins[0]),math.ceil(mins[1]))
if__name__=="__main__":
nums=19778979
t=time.time()
data=changeTime(nums)
printtime.time()-t
printdata
[python]view plain
irsadmin@IR-ZHANGCHENG~/Desktop/iOpenData
$pythondataGenerat.py
0.0
3min,18.0sec
irsadmin@IR-ZHANGCHENG~/Desktop/iOpenData
$pythondataGenerat.py
0.0
228days,22hour,9min,39.0sec
irsadmin@IR-ZHANGCHENG~/Desktop/iOpenData
$
㈤ python 如何將字元串轉化為datetime.date
比較省事的辦法是用time模塊的strptime方法來解析日期字元串成為時間對象,然後再把年月日部分提取出來,最後生成datetime.date對象。
#方法1,用time模塊的strptime方法來解析日期字元串成為時間對象
importtime,datetime
date_str='2017-10-19'
fmt='%Y-%m-%d'
time_tuple=time.strptime(date_str,fmt)
year,month,day=time_tuple[:3]
a_date=datetime.date(year,month,day)
print(a_date,type(a_date))
#方法2,直接把日期字元串拆分轉換成年/月/日對應的整數
importdatetime
date_str='2017-10-19'
print(datetime.date(*map(int,date_str.split('-'))))
㈥ Python 怎麼將整數換算成月份和天數
如果你想將它轉換成一個字元串,你可以簡單地使用:
convert_string = '01-01-{}'.format
,然後用它喜歡:
>>> convert_string(2020)
'01-01-2020'
向一個日期時間
如果要將其轉換為datetime對象,則可以簡單地使用:
from datetime import date
from functools import partial
convert_to_date = partial(date,month=1,day=1)
現在convert_to_date是一個數值year轉換成date對象的功能:
>>> convert_to_date(2020)
datetime.date(2020, 1, 1)
㈦ 新手求教:python 時間格式轉換
時間格式轉換分為兩種,時間轉換為字元串和字元串轉換為時間,具體代碼例子如下:
1importdatetime
2importtime
3#日期轉換為字元串,使用strftime()函數
4#time.strftime(format[,t])
5
6printdatetime.datetime.now()
7printdatetime.datetime.now().strftime("%Y-%m-%d
%H:%M:%S")
8printdatetime.datetime.now().strftime("%b
%d%Y%H:%M:%S")
9printdatetime.datetime.now().strftime("%c
%d%Y%H:%M:%S")
10#字元串轉換為日期,使用strptime()函數
11t=(2009,2,17,8,3,38,1,48,0)
12t=time.mktime(t)
13printtime.strftime("%b%d%Y%H:%M:%S",time.gmtime(t))
14printtime.strftime("%Y-%m-%d%H:%M:%S",time.gmtime(t))
註:格式字元說明:
python中時間日期格式化符號:
%y
兩位數的年份表示(00-99)
%Y
四位數的年份表示(000-9999)
%m
月份(01-12)
%d
月內中的一天(0-31)
%H
24小時制小時數(0-23)
%I
12小時制小時數(01-12)
%M
分鍾數(00=59)
%S
秒(00-59)
%a
本地簡化星期名稱
%A
本地完整星期名稱
%b
本地簡化的月份名稱
%B
本地完整的月份名稱
%c
本地相應的日期表示和時間表示
%j
年內的一天(001-366)
%p
本地A.M.或P.M.的等價符
%U
一年中的星期數(00-53)星期天為星期的開始
%w
星期(0-6),星期天為星期的開始
%W
一年中的星期數(00-53)星期一為星期的開始
%x
本地相應的日期表示
%X
本地相應的時間表示
%Z
當前時區的名稱
%%
%號本身
㈧ 在交互模式中,使用 python 計算一年有多少秒
一年等於「print 60*60*24*365」,結果可以網路「60*60*24*365」。60秒一分鍾,60分鍾一小時,24小時一天,365天一年。
㈨ Python簡單計算一年有多少小時,分鍾,秒
#coding=utf-8
importcalendar
defgetsec(year):
all_days=0
foriinrange(1,13):
all_days=calendar.monthrange(year,i)[1]+all_days
returnall_days*24*60*60*60
printgetsec(2017)