歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Python time和datetime的常用轉換處理

Python time和datetime的常用轉換處理

一、time

1、獲取當前時間和時區

>>> now = time.time()  # 當前時間 float類型
>>> time.strftime("%Y-%m-%d %H:%M:%S")  #當前時間 str
  '2016-11-04 15:29:58'

>>> time.ctime()  # 當前時間 english str
  'Fri Nov 4 15:40:42 2016'

>>> time.time()
1478244363.875308
>>> time.localtime()  # 當前時間 time結構體
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=4, tm_hour=15, tm_min=26, tm_sec=9, tm_wday=4, tm_yday=309, tm_isdst=0)

>>> time.localtime(now)  # float -> struct_time
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=4, tm_hour=15, tm_min=26, tm_sec=1, tm_wday=4, tm_yday=309, tm_isdst=0)

>>> time.strftime('%Z', time.localtime())  # 顯示當前時區 China standard timezone
'CST'
>>> time.gmtime()    # 顯示UTC標准時間 跟中國相差8個鐘
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=4, tm_hour=7, tm_min=26, tm_sec=28, tm_wday=4, tm_yday=309, tm_isdst=0)

其中time.time()返回的一個float型,是從1970年1月1日0時起到當前經過的秒數,注意這裡是分時區的

time.localtime()返回的是一個time結構體,其中包括tm_year,tm_mon,tm_mday,tm_hour,tm_min,tm_sec,tm_wday,tm_yday,tm_isdst=0(夏令時間標志)

  2、時間字符串轉成time格式

>>> a = '2016-11-04 15:29:58'
>>> time.strptime(a, "%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=4, tm_hour=15, tm_min=29, tm_sec=58, tm_wday=4, tm_yday=309, tm_isdst=-1)

  3、時間字符串轉成float類型

>>> a = '2016-11-04 15:29:58'
>>> time.mktime(time.strptime(a, "%Y-%m-%d %H:%M:%S"))
1478244598.0

  4、time tuple格式轉成字符串

>>> time_tuple = (2016, 11, 04, 13, 51, 18, 2, 317, 0)   
>>> time.strftime("%Y-%m-%d %H:%M:%S", time_tuple)   
'2016-11-04 13:51:18'

  5、float類型轉成時間字符串

>>> a = 1478244598.0                   
>>> b = time.localtime(a)
>>> time.strftime("%Y-%m-%d %H:%M:%S", b)
'2016-11-04 15:29:58'

  6、時間和日期格式化符號說明

%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 當前時區的名稱
%% %號本身

  二、datetime

  1、獲取當前時間

>>> datetime.datetime.now()    # datetime tuple
datetime.datetime(2016, 11, 4, 15, 52, 17, 680405)

>>> time.mktime(datetime.datetime.now().timetuple())  # float類型
1478245984.0
>>> datetime.datetime.now().replace(second=0, microsecond=0)  # 秒數為0 毫秒數為0
  datetime.datetime(2016, 11, 4, 15, 54)

>>> datetime.date.today()  # 當前天
  datetime.date(2016, 11, 4)

  2、datetime tuple轉成時間字符串

>>> now = datetime.datetime.now()     
>>> now.strftime("%Y-%m-%d %H:%S:%M")
'2016-11-04 16:06:00'

  3、datetime tuple轉成float類型

>>> now = datetime.datetime.now()
>>> time.mktime(now.timetuple())
1478246406.0

  4、datetime date和time轉換

>>> a = datetime.date(2016, 11, 4)
>>> datetime.datetime.strptime(str(a),'%Y-%m-%d')
datetime.datetime(2016, 11, 4, 0, 0)
>>> a
datetime.date(2016, 11, 4)

  5、獲取當前時間的前一段時間

now = datetime.datetime.now()

# 前一小時
a = now - datetime.timedelta(hours=1)
print a.strftime("%Y-%m-%d %H:%S:%M")

# 前一天
b = now - datetime.timedelta(days=1)
print b.strftime("%Y-%m-%d %H:%S:%M")

# 上周日
c = now - datetime.timedelta(days=now.isoweekday())
print c.strftime("%Y-%m-%d %H:%S:%M")# 上周一
d = c - datetime.timedelta(days=6)
print d.strftime("%Y-%m-%d %H:%S:%M")# 上個月最後一天
e = now - datetime.timedelta(days=now.day)
print e.strftime("%Y-%m-%d %H:%S:%M")

# 上個月第一天
print datetime.datetime(e.year, e.month, 1)

  6、獲取兩個時間相差的秒數

(datetime.datetime.now() - datetime.datetime(1970, 1,1,0, 0, 0,0)).total_seconds()    # 獲取的是UTC標准時區的時間float類型

Copyright © Linux教程網 All Rights Reserved