pythondatetime類型
① python中import datetime是什麼意思
引用datetime模塊,使用其中的相關函數。
datetime模塊提供了可以通過多種方式操作日期和時間的類。在支持日期時間數學運算的同時,實現的關注點更著重於如何能夠更有效地解析其屬性用於格式化輸出和數據操作。相關功能可以參閱time和calendar模塊。
有兩種日期和時間的對象:「簡單型「和」感知型「。
感知型對象有著用足以支持一些應用層面演算法和國家層面時間調整的信息,例如時區和夏令時,來讓自己和其他的感知型對象區別開來。感知型對象是用來表達不對解釋器開放的特定時間信息1。
簡單型對象沒包含足夠多的信息來明確定位與之相關的 date/time 對象。 簡單型對象所代表的是世界標准時間(UTC)、當地時間或者是其它時區的時間完全取決於程序,就像一個數字是代表的是米、英里或者質量完全取決於程序一樣。 簡單型對象以忽略了一些現實情況的為代價使得它容易理解和使用。
對於需要感知型對象的應用,datetime對象和time對象有一個可選的時區信息屬性tzinfo,這個屬性可以設置給tzinfo類的子類實例。這些tzinfo對象捕獲關於相對於世界標准時間(UTC)偏移、時區名字和夏令時是否有效等信息。需要注意的是,只有一個具體的tzinfo類,即由datetime模塊提供的timezone類。timezone類可以代表相對於世界標准時間(UTC)固定偏移的簡單時區,比如世界標准時間(UTC)自己或者北美東部時間或者東部夏令時。支持時區的詳細程度取決於應用。世界各地的時間調整規則相比理性更加政治性,經常會變更。也沒有一個基於世界標准時間(UTC)的標准套件適合用於所有應用。
有效的類型
classdatetime.date
一個理想化的簡單型日期,它假設當今的公歷在過去和未來永遠有效。 屬性:year,month, andday。
classdatetime.time
一個理想化的時間,它獨立於任何特定的日期,假設每天一共有 24*60*60 秒(這里沒有"閏秒"的概念)。 屬性:hour,minute,second,microsecond, 和tzinfo。
classdatetime.datetime
日期和時間的結合。屬性:year,month,day,hour,minute,second,microsecond, andtzinfo.
classdatetime.timedelta
表示兩個date對象或者time對象,或者datetime對象之間的時間間隔,精確到微秒。
classdatetime.tzinfo
一個描述時區信息的抽象基類。用於給datetime類和time類提供自定義的時間調整概念(例如,負責時區或者夏令時)。
classdatetime.timezone
一個實現了tzinfo抽象基類的子類,用於表示相對於 世界標准時間(UTC)的偏移量。
② python 如何將字元串轉化為datetime.date
python 如何將字元串轉化為datetime.date需要分」字元串與time類型的轉換「和」time類型與datetime類型的轉換「兩種情況。
③ python中怎麼把datetime類型轉換成timestamp
Python3.6.4(v3.6.4:d48ecebad5,Dec182017,21:07:28)
[GCC4.2.1(AppleInc.build5666)(dot3)]ondarwin
Type"help","right","credits"or"license"formoreinformation.
>>>importtime
>>>fromdatetimeimportdatetime
>>>now=datetime.now()
>>>timestamp=int(time.mktime(now.timetuple()))
>>>timestamp
1520493295
>>>timestamp_microsecond=float('{}{:06}'.format(timestamp,now.microsecond))/1000000
>>>timestamp_microsecond
1520493295.337066
④ python 讀取execl的時候 日期格式讀出來的是一串數字,怎麼才能還原成日期格式,我的日期是datetime類型
你是用pyExcelerator還是xlrd讀的excel?如果是xlrd那它自帶一個xldate_as_tuple函數,可以轉成datetime,比如:
from datetime import datetime
from xlrd import xldate_as_tuple
d=datetime(*xldate_as_tuple(x,0))#x就是你那串數字的變數
如果是用pyExcelerator,那好象它沒有類似的函數,可以用下面這個函數:
def xldate_as_datetime(xldate, datemode=0):
if datemode not in (0, 1):
raise XLDateBadDatemode(datemode)
if xldate == 0.00:
return datetime.time(0, 0, 0)
if xldate < 0.00:
raise XLDateNegative(xldate)
xldays = int(xldate)
frac = xldate - xldays
seconds = int(round(frac * 86400.0))
assert 0 <= seconds <= 86400
if seconds == 86400:
seconds = 0
xldays += 1
#if xldays >= _XLDAYS_TOO_LARGE[datemode]:
# raise XLDateTooLarge(xldate)
if xldays == 0:
# second = seconds % 60; minutes = seconds // 60
minutes, second = divmod(seconds, 60)
# minute = minutes % 60; hour = minutes // 60
hour, minute = divmod(minutes, 60)
return datetime.time(hour, minute, second)
if xldays < 61 and datemode == 0:
raise XLDateAmbiguous(xldate)
return (
datetime.datetime.fromordinal(xldays + 693594 + 1462 * datemode)
+ datetime.timedelta(seconds=seconds)
)
用法:
d=xldate_as_datetime(x)#x就是你那串數字的變數
⑤ python datetime處理時間
python時間處理方法datetime(),下面就舉幾個代碼案例進行說明,代碼如下:
#-*-coding:utf-8-*-
#運行環境:Python3.4
#datetime類
#datetime是date與time的結合體,包括date與time的所有信息。
#它的構造函數如下:
#datetime.datetime(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]]])
#各參數的含義與date、time的構造函數中的一樣,要注意參數值的范圍。
#1.datetime類定義的類屬性與方法:
#datetime.min、datetime.max:datetime所能表示的最小值與最大值;
#print:datetime.max:9999-12-3123:59:59.999999
#print:datetime.min:0001-01-0100:00:00
fromdatetimeimport*
importtime
print('datetime.max:'+str(datetime.max))
print('datetime.min:'+str(datetime.min))
#datetime.resolution:datetime最小單位;
#print:datetime.resolution:0:00:00.000001
print('datetime.resolution:'+str(datetime.resolution))
#datetime.today():返回一個表示當前本地時間的datetime對象;
#print:today():2012-09-1219:37:50.721000
print('today():'+str(datetime.today()))
#datetime.now([tz]):返回一個表示當前本地時間的datetime對象,如果提供了參數tz,則獲取tz參數所指時區的本地時間;
#print:now():2012-09-1219:37:50.738000
print('now():'+str(datetime.now()))
#datetime.utcnow():返回一個當前utc時間的datetime對象;
#print:2012-09-1211:37:50.739000
print('utcnow():'+str(datetime.utcnow()))
#datetime.fromtimestamp(timestamp[,tz]):根據時間戮創建一個datetime對象,參數tz指定時區信息;
#print:fromtimestamp(tmstmp):2012-09-1219:37:50.741000
print('fromtimestamp(tmstmp):'+str(datetime.fromtimestamp(time.time())))
#datetime.utcfromtimestamp(timestamp):根據時間戮創建一個datetime對象;
#print:utcfromtimestamp(tmstmp):2012-09-1211:37:50.742000
print('utcfromtimestamp(tmstmp):'+str(datetime.utcfromtimestamp(time.time())))
#datetime.combine(date,time):根據date和time,創建一個datetime對象;
#print:datetime.combine(date,time):2012-09-1219:46:05
d=date(2012,9,12)
fromdatetimeimport*
t=time(19,46,5)
print('datetime.combine(date,time):'+str(datetime.combine(d,t)))
#datetime.strptime(date_string,format):將格式字元串轉換為datetime對象;
#print:2007-03-0421:08:12
print(datetime.strptime("2007-03-0421:08:12","%Y-%m-%d%H:%M:%S"))
#2.datetime類提供的實例方法與屬性
dt=datetime.strptime("2012-09-1221:08:12","%Y-%m-%d%H:%M:%S")
#print:2012912218120None
print(dt.year)
print(dt.month)
print(dt.day)
print(dt.hour)
print(dt.minute)
print(dt.second)
print(dt.microsecond)
print(dt.tzinfo)
print(dt.date())
print(dt.time())
print(dt.replace(year=2013))
print(dt.timetuple())
print(dt.utctimetuple())
print(dt.toordinal())
print(dt.weekday())
print(dt.isocalendar())
#printdt.isoformat([sep])
#datetime.ctime():返回一個日期時間的C格式字元串,等效於time.ctime(time.mktime(dt.timetuple()));
#3.格式字元串
#datetime.strftime(format)
#%a星期的簡寫。如星期三為Web
#%A星期的全寫。如星期三為Wednesday
#%b月份的簡寫。如4月份為Apr
#%B月份的全寫。如4月份為April
#%c:日期時間的字元串表示。(如:04/07/1010:43:39)
#%d:日在這個月中的天數(是這個月的第幾天)
#%f:微秒(范圍[0,999999])
#%H:小時(24小時制,[0,23])
#%I:小時(12小時制,[0,11])
#%j:日在年中的天數[001,366](是當年的第幾天)
#%m:月份([01,12])
#%M:分鍾([00,59])
#%p:AM或者PM
#%S:秒(范圍為[00,61],為什麼不是[00,59],參考python手冊~_~)
#%U:周在當年的周數當年的第幾周),星期天作為周的第一天
#%w:今天在這周的天數,范圍為[0,6],6表示星期天
#%W:周在當年的周數(是當年的第幾周),星期一作為周的第一天
#%x:日期字元串(如:04/07/10)
#%X:時間字元串(如:10:43:39)
#%y:2個數字表示的年份
#%Y:4個數字表示的年份
#%z:與utc時間的間隔(如果是本地時間,返回空字元串)
#%Z:時區名稱(如果是本地時間,返回空字元串)
#%%:%%=>%
dt=datetime.now()
#print:(%Y-%m-%d%H:%M:%S%f):2012-09-1223:04:27145000
print('(%Y-%m-%d%H:%M:%S%f):'+str(dt.strftime('%Y-%m-%d%H:%M:%S%f')))
#print:(%Y-%m-%d%H:%M:%S%p):12-09-1211:04:27PM
print('(%Y-%m-%d%H:%M:%S%p):'+str(dt.strftime('%y-%m-%d%I:%M:%S%p')))
#print:%a:Wed
print('%%a:%s'%dt.strftime('%a'))
#print:%A:Wednesday
print('%%A:%s'%dt.strftime('%A'))
#print:%b:Sep
print('%%b:%s'%dt.strftime('%b'))
#print:%B:September
print('%%B:%s'%dt.strftime('%B'))
#print:日期時間%c:09/12/1223:04:27
print('日期時間%%c:%s'%dt.strftime('%c'))
#print:日期%x:09/12/12
print('日期%%x:%s'%dt.strftime('%x'))
#print:時間%X:23:04:27
print('時間%%X:%s'%dt.strftime('%X'))
#print:今天是這周的第3天
print('今天是這周的第%s天'%dt.strftime('%w'))
#print:今天是今年的第256天
print('今天是今年的第%s天'%dt.strftime('%j'))
#print:今周是今年的第37周
print('今周是今年的第%s周'%dt.strftime('%U'))
上面代碼案例運行結果如下:
atetime.max:9999-12-3123:59:59.999999
datetime.min:0001-01-0100:00:00
datetime.resolution:0:00:00.000001
today():2014-05-0415:58:18.141186
now():2014-05-0415:58:18.193146
utcnow():2014-05-0407:58:18.243958
fromtimestamp(tmstmp):2014-05-0415:58:18.291558
utcfromtimestamp(tmstmp):2014-05-0407:58:18.342550
datetime.combine(date,time):2012-09-1219:46:05
2007-03-0421:08:12
2012
9
12
21
8
12
0
None
2012-09-12
21:08:12
2013-09-1221:08:12
time.struct_time(tm_year=2012,tm_mon=9,tm_mday=12,tm_hour=21,tm_min=8,tm_sec=12,tm_wday=2,tm_yday=256,tm_isdst=-1)
time.struct_time(tm_year=2012,tm_mon=9,tm_mday=12,tm_hour=21,tm_min=8,tm_sec=12,tm_wday=2,tm_yday=256,tm_isdst=0)
734758
2
(2012,37,3)
(%Y-%m-%d%H:%M:%S%f):2014-05-0415:58:19326295
(%Y-%m-%d%H:%M:%S%p):14-05-0403:58:19PM
%a:Sun
%A:Sunday
%b:May
%B:May
日期時間%c:SunMay415:58:192014
日期%x:05/04/14
時間%X:15:58:19
今天是這周的第0天
今天是今年的第124天
今周是今年的第18周
⑥ python中datetime怎麼用
'''''
日期相關的操作
'''
from
datetime
import
datetime
from
datetime
import
timedelta
DATE_FMT
=
'%Y-%m-%d'
DATETIME_FMT
=
'%Y-%m-%d
%H:%M:%S'
DATE_US_FMT
=
'%d/%m/%Y'
'''''
格式化常用的幾個參數
Y
:
1999
y
:99
m
:
mouth
02
12
M
:
minute
00-59
S
:
second
d
:
day
H
:
hour
'''
def
dateToStr(date):
'''''把datetime類型的時間格式化自己想要的格式'''
return
datetime.strftime(date,
DATETIME_FMT)
def
strToDate(strdate):
'''''把str變成日期用來做一些操作'''
return
datetime.strptime(strdate,
DATETIME_FMT)
def
timeElement():
'''''獲取一個時間對象的各個元素'''
now
=
datetime.today()
print
'year:
%s
month:
%s
day:
%s'
%(now.year,
now.month,
now.day)
print
'hour:
%s
minute:
%s
second:
%s'
%(now.hour,
now.minute,
now.second)
print
'weekday:
%s
'
%(now.weekday()+1)
#一周是從0開始的
def
timeAdd():
'''''
時間的加減,前一天後一天等操作
datetime.timedelta([days[,
seconds[,
microseconds[,
milliseconds[,
minutes[,
hours[,
weeks]]]]]]])
參數可以是正數也可以是負數
得到的對象可以加也可以減
乘以數字和求絕對值
'''
atime
=
timedelta(days=-1)
now
=
datetime.strptime('2001-01-30
11:01:02',
DATETIME_FMT)
print
now
+
atime
print
now
-
abs(atime)
print
now
-
abs(atime)*31
import
calendar
def
lastFirday():
today
=
datetime.today()
targetDay
=
calendar.FRIDAY
thisDay
=
today.weekday()
de
=
(thisDay
-
targetDay)
%
7
res
=
today
-
timedelta(days=de)
print
res
def
test():
#print
dateToStr(datetime.today())
#print
strToDate('2013-01-31
12:00:01')
#timeElement()
#timeAdd()
#lastFirday()
if
__name__=='__main__':
test()
⑦ python中如何把datetime.datetime轉換成datetime.time
用Python實現字元串和日期相互轉換的方法,具體如下:這里用的分別是time和datetime函數來處理 importtime,datetime //日期轉化為字元串 #datetostr //輸出時間 printtime.strftime("%Y-%m-%d%X",time.localtime()) #strtodate //字元串轉化為日期 t=time.strptime("2016-12-05","%Y-%m-%d") y,m,d=t[0:3] //輸出時間 printdatetime.datetime(y,m,d)
⑧ python如何定義日期函數
在Python中,日期和時間相關的函數和類被封裝在datetime模塊中。可以使用該模塊中的函數和類來處理日期和時間相關的操作。下面是一些常用的日期函數:
datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None):創建一個datetime對象,表示指定的日鍵升期和時間。year、month和day參數是必需的,表示日期;hour、minute、second和microsecond參數是可選的,表示時間;tzinfo參數是可選的,表示時區信息。
datetime.date(year, month, day):創建一個date對象,表示指定的日期。year、month和day參數是必需的,表示日期。
datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None):創建一個time對象,表示指定的時間。hour、minute、second和microsecond參數是可選的,表示時間;tzinfo參數是可選的,表示時區信息。
datetime.datetime.now(tz=None):返回一個datetime對象,表示當前日期和時間。tz參數是可選的,表示時區信息。
datetime.date.today():返回一個date對象,表示當前日期。
這些函數可以用來創建、稿慶老獲取日期和差派時間對象,並進行各種日期和時間的操作。例如,可以使用datetime.datetime.now()函數獲取當前日期和時間,然後使用strftime()函數將其格式化為字元串輸出。
⑨ python中timedelta方法怎麼用
#! /usr/bin/python# coding=utf-8from datetime import datetime,timedelta"""timedelta代表兩個datetime之間的時間差"""now = datetime.now()
past = past = datetime(2010,11,12,13,14,15,16)
timespan = now - past#這會得到一個負數
past - now
attrs = [
("days","日"),( 'seconds',"秒"),( 'microseconds',"毫秒")#('min',"最小"),( 'max',"最大"),]for k,v in attrs: "timespan.%s = %s #%s" % (k,getattr(timespan, k),v)"""總共相差的秒數"""timespan.total_seconds()"""實例化一個timespan
請注意它的參數順序
timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])"""timespan = timedelta(days=1)
now - timespan #返回的是datetime型
now + timespan
timespan * 2 #還可以乘哦。代表二倍
timespan / 13#增加一個月from calendar import monthrange
now + timedelta(days=monthrange(start.year,start.month)[1])