time&datetime模塊

在Python中,和時間處理相關的模塊有time,datatime,calendar(不經常使用)三個。函數

UTCC(Coordinated Universal Time,世界協調時)亦即格林威治天文時間,世界標準時間。在中國爲UTC+8。DST(Daylight Saving Time)即夏令時。spa

在Python中時間的表示方式分三種:操作系統

  1. 時間戳(timestamp):時間戳表示從1970年1月1日00:00:00開始按秒計算的偏移量。咱們運行「type(time.time())」,返回的是float類型。
    >>> time.time()
    1521948761.733449
    >>> type(time.time())
    <class 'float'>
  2. 格式化的時間字符串:2014-11-11 11:11,即time.strftime('%Y-%m-%d')
    >>> import time
    >>> time.strftime('%Y-%m-%d')
    '2018-03-25'
  3. 元組(struct_time)共九個元素,返回struct_time的函數主要有gmtime(),localtime(),strptime()
    >>> import time
    >>> time.localtime()
    time.struct_time(
    tm_year=2018,   #
    tm_mon=2,  #
    tm_mday=26,   #
    tm_hour=2,  #
    tm_min=47,  #
    tm_sec=49,  #
    tm_wday=0,   # 星期幾(0表明星期日)
    tm_yday=57,   # 一年中第幾天
    tm_isdst=0)   # 是否夏令時,默認是-1 
time模塊

      

time經常使用方法:線程

>>> time.time()  # 返回當前時間的時間戳(按秒計算的浮點數),從1970到如今的秒數
1521948276.9173918

>>> time.localtime()  # 打印本地時間(操做系統時間)
time.struct_time(tm_year=2018, tm_mon=3, tm_mday=25, tm_hour=11, tm_min=22, tm_sec=27, tm_wday=6, tm_yday=84, tm_isdst=0)

>>> time.gmtime()   # 打印格林威治時間(比北京時間晚8個小時)
time.struct_time(tm_year=2018, tm_mon=3, tm_mday=25, tm_hour=3, tm_min=55, tm_sec=55, tm_wday=6, tm_yday=84, tm_isdst=0)

time.mktime()   # 把一個時間對象轉化爲時間戳
>>> time.mktime(time.localtime())
1521950235.0

time.sleep()   # 線程推遲指定的時間運行,單位爲秒

time.asctime()  # 把一個表示時間的元祖或struct time轉換表示形式
>>> time.asctime()   # 若是沒有參數將time.localtime做爲參數傳入
'Mon Feb 26 10:59:10 2018'

time.ctime()  # 把一個時間戳轉化爲time_asctime()形式,默認以time.time()爲參數
>>> time.ctime()   # 至關於time.asctime(time.localtime(secs))
'Mon Feb 26 11:06:29 2018'
>>> time.ctime(-231334422)  # 參數能夠爲負
'Sun Sep  2 20:26:18 1962't

time.strftime(format,a) # 把一個表明時間的元祖或struct time轉化爲格式化的時間字符串
>>> time.strftime('%Y-%m-%d')
'2018-02-26'
>>> time.strftime('%Y-%m-%d %H:%M:%S')
'2018-02-26 11:19:47'
>>> time.strftime('%Y-%m-%d %H:%M:%S',a)
'2018-02-26 10:40:18'
>>> time.strftime('%Y-%m-%d %H:%M:%S %A',a)
'2018-02-26 10:40:18 Monday'
>>> time.strftime('%Y-%m-%d %H:%M:%S %p')
'2018-02-26 11:21:44 AM'
>>> time.strftime('%Y-%m-%d %H:%M:%S %U')   # 今年的第幾周
'2018-02-26 11:21:55 08'
>>> time.strftime('%Y-%m-%d %H:%M:%S %w')   # 0-6,星期日是0
'2018-02-26 11:24:56 1'

time.strptime('string', format)  # 把一個格式化時間字符串轉化爲struct_time,stftime的逆操做
>>> s = time.strftime('%Y %m-%d %H:%M:%S')
>>> s
'2018 02-26 11:42:16'
>>> time.strptime(s,'%Y %m-%d %H:%M:%S')
time.struct_time(tm_year=2018, tm_mon=2, tm_mday=26, tm_hour=11, tm_min=42, \
                  tm_sec=16, tm_wday=0, tm_yday=57, tm_isdst=-1)

 

datetime模塊

  datetime模塊相比time模塊,datetime模塊的接口更直觀,更容易調用。
code

  datetime模塊定義了下面幾個類:orm

    一、datetime.date:表示日期的類,經常使用的屬性有year,month,day對象

    二、datetime.time:表示時間的類,經常使用的屬性有hour,minute,second,microsecondblog

    三、datetime.datetime:表示日期時間接口

    四、datetime.timedelta:表示時間間隔,即兩個時間點之間的長度字符串

    五、datetime.tzinfo:與時區相關信息

>>> a = datetime.datetime.now()
datetime.datetime(2018, 2, 26, 12, 8, 18, 805166)

>>> import time
>>> d2 = datetime.date.fromtimestamp(time.time())  # 時間戳轉化爲年月日
datetime.date(2018, 2, 26)

>>> d2.timetuple()   # 轉化爲時間對象
time.struct_time(tm_year=2018, tm_mon=2, tm_mday=26, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=57, tm_isdst=-1)


# 時間運算
>>> a = datetime.datetime.now()
>>> t1 = datetime.timedelta(1)
>>> a - t1
datetime.datetime(2018, 2, 25, 13, 37, 13, 812339)

>>> a - datetime.timedelta(days=1)
datetime.datetime(2018, 2, 25, 13, 37, 13, 812339)
>>> a - datetime.timedelta(days=3)
datetime.datetime(2018, 2, 23, 13, 37, 13, 812339)
# 還支持hours、minutes、secends的運算
>>> a - datetime.timedelta(hours=3)
datetime.datetime(2018, 2, 26, 10, 37, 13, 812339)
>>> a + datetime.timedelta(hours=3)
datetime.datetime(2018, 2, 26, 16, 37, 13, 812339)

# 時間替換
>>> n = datetime.datetime.now()
>>> n.replace(year=2016)
datetime.datetime(2016, 2, 26, 13, 45, 26, 863002)
>>> n.replace(year=2017,month=4)
datetime.datetime(2017, 4, 26, 13, 45, 26, 863002)
>>> n.replace(year=2017,month=4,day=13)
datetime.datetime(2017, 4, 13, 13, 45, 26, 863002)

# replace實現時間計算
>>> expire_year = time.localtime()[0]   # 當前年份
>>> expire_date = datetime.datetime.now().replace(year=expire_year+10).strftime('%Y-%m-%d')
>>> expire_date
'2028-03-25'
相關文章
相關標籤/搜索