天天看點

python之time和datetime子產品一、time子產品的使用二、datetime 子產品的使用

醉裡挑燈看劍,夢回吹角連營。八百裡分麾下炙,五十弦翻塞外聲。沙場秋點兵。

馬作的盧飛快,弓如霹靂弦驚。了卻君王天下事,赢得生前身後名。可憐白發生!

幾個術語了解

  • 時間戳(timestamp)的方式:通常來說,時間戳表示的是從1970年1月1日開始按秒計算的偏移量(time.gmtime(0))此子產品中的函數無法處理1970紀元年以前的時間或太遙遠的未來(處理極限取決于C函數庫,對于32位系統而言,是2038年)
  • UTC(Coordinated Universal Time,世界協調時)也叫格林威治天文時間,是世界标準時間.在我國為UTC+8
  • DST(Daylight Saving Time)即夏令時

一、time子產品的使用

  • time.time()

    擷取目前時間戳(以秒為機關的浮點型的時間戳)

    print(time.time())

    >>>1539847769.6119404

  • time.localtime(seconds=None)

    預設擷取目前時間的結構化時間

    print(time.localtime())

    >>>time.struct_time(tm_year=2018, tm_mon=10, tm_mday=18, tm_hour=15, tm_min=35, tm_sec=0, tm_wday=3, tm_yday=291, tm_isdst=0)

  • time.mktime(p_tuple)

    将結構化時間轉化成時間戳格式

    print(time.mktime(time.localtime()))

    >>>1539849828.0

    注意和time.time()的差別:

    print(time.time())

    1539849828.090503

  • time.strftime(format, p_tuple=None)

    格式化時間(字元串)

    print(time.strftime("%Y-%m-%d %H:%M:%S"))

    >>>2018-10-18 15:56:42

  • time.strptime(string, format)

    将格式化時間轉成結構化時間

    print(time.strptime("2018-10-18 15:56:42","%Y-%m-%d %H:%M:%S"))

    >>>time.struct_time(tm_year=2018, tm_mon=10, tm_mday=18, tm_hour=15, tm_min=56, tm_sec=42, tm_wday=3, tm_yday=291, tm_isdst=-1)

  • time.gmtime(seconds=None)

    預設目前UTC時間轉結構化時間,與英國倫敦當地時間一緻

    print(time.gmtime(time.time()))

    >>>time.struct_time(tm_year=2018, tm_mon=10, tm_mday=18, tm_hour=8, tm_min=10, tm_sec=16, tm_wday=3, tm_yday=291, tm_isdst=0)

  • time.sleep(secends)

    線程推遲指定的時間運作

附一:

python之time和datetime子產品一、time子產品的使用二、datetime 子產品的使用

image.png

附二:time時間之間的轉換

python之time和datetime子產品一、time子產品的使用二、datetime 子產品的使用

二、datetime 子產品的使用

datetime子產品定義了5個類,分别是

  • 1.datetime.date:是指年月日構成的日期(相當于月曆)
  • 2.datetime.datetime:是指時分秒微秒構成的一天24小時中的具體時間(相當于手表)
  • 3.datetime.time:上面兩個合在一起,既包含時間又包含日期
  • 4.datetime.timedelta:表示時間間隔,即兩個時間點的間隔
  • 5.datetime.tzinfo:時區的相關資訊

1. datetime.date類

  • date類有三個參數,datetime.date(year,month,day),傳回year-month-day

    print(datetime.date(2017,12,1))

    >>>2017-12-01

  • datetime.date.today()

    擷取目前時間的年月日

    print(datetime.date.today())

    >>>2018-10-18

  • datetime.date.isoweekday(cls)

    擷取指定日期是星期幾,1=周一,7=周天

    a = datetime.date.today()

    print(datetime.date.isoweekday(a))

    >>>4

  • datetime.date.weekday(cls)

    擷取指定日期是星期幾,0=周一,6=周天

    a = datetime.date.today()

    print(datetime.date.weekday(a))

    >>>3

  • datetime.date.fromtimestamp(時間戳)

    将時間戳轉化成特定格式的年月日

    print(datetime.date.fromtimestamp(1539847769))

    >>>2018-10-18

  • cls.timetuple() 将特定格式的日期轉化成結構化時間

    a = datetime.date.today()

    print(a.timetuple())

    >>>time.struct_time(tm_year=2018, tm_mon=10, tm_mday=18, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=291, tm_isdst=-1)

  • cls.replace(year=2010) 替換指定的年月日

    a = datetime.date.today()

    print(a.replace(year=2010))

    >>>2010-10-18

2. datetime.time類

  • time類有5個參數,datetime.time(hour,minute,second,microsecond,tzoninfo)

    print(datetime.time(8,5,32))

    print(datetime.time(8,5,32,32))

    >>>08:05:32

    >>>08:05:32.000032

  • cls.strftime("時間格式")

    指定時間格式

    a= datetime.time(8,5,32,32)

    print(a.strftime("%H:%M"))

    >>>08:05

  • cls.replace()

    替換時分秒

    a= datetime.time(8,5,32,32)

    print(a.replace(hour=18))

    >>>18:05:32.000032

  • datetime.time.tzname()

    傳回時區名字:略

  • datetime.time.utcoffset()

    傳回時區的時間偏移量:略

3. datetime.datetime類

datetime子產品類的使用大同小異,有很多方法我們可能這輩子都用不上,datetime類的方法比較多,在這裡我就撿重點的列一下:

  • datetime.datetime.now()或者datetime.datetime.today()

    得到目前的具體時間(不指定時區時兩個方法一樣的效果)

    print(datetime.datetime.now())

    >>>2018-10-18 19:15:17.691425

  • datetime.datetime.now().date()

    傳回目前時間的年月日部分

    print(datetime.datetime.now().date())

    >>>2018-10-18

  • datetime.datetime.now().time()

    傳回目前時間的時分秒...部分

    print(datetime.datetime.now().time())

    >>>19:16:54.497104

  • datetime.datetime.strftime()

    由日期格式轉化為字元串格式

    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

    >>>2018-10-18 19:21:13

  • datetime.datetime.strptime()

    由字元串格式轉化為日期格式

    a = datetime.datetime.strptime("2018-10-18 19:21:37",'%Y-%m-%d %H:%M:%S')

    print(a,type(a))

    >>>2018-10-18 19:21:37 <class 'datetime.datetime'>

4. datetime.timedelta類

datetime.datetime.timedelta用于計算兩個日期之間的內插補點:

import datetime

a = datetime.datetime(2015, 10, 3)

b = datetime.datetime.now()

res1 = (b - a)
res2 = (b - a).days   //  取時間差天數
res3 = (b - a).seconds   // 取時間差時分秒部分的秒數總和
res4 = (b - a).microseconds  // 取時間差 秒數之後的微秒數
res5 = (b - a).total_seconds()  // 時間差的總秒數

print(res1)   >>> 1111 days, 19:48:35.543523
print(res2)   >>> 1111
print(res3)   >>> 71315
print(res4)   >>> 71315
print(res5)   >>> 96061715.543523
           
python之time和datetime子產品一、time子產品的使用二、datetime 子產品的使用