python日期轉化

python 中 time 有三種格式:

float,python

struct tuple(time.struct_time 或 datetime.datetime),數組

str函數

 

經常使用的:spa

float --> struct tuple:   time.localtime( float )code

struct time tuple --> str: time.strftime(format, struct time tuple)orm

str --> struct time tuple: time.strptime(str, format)字符串

struct time tuple --> float : time.mktime(struct time tuple)form

struct time tuple --> datetime: datetime(*time_tuple[0:6])import

 

float --> datetime: datetime.datetime.fromtimestamp( float )基礎

datetime --> str: datetime.strftime(format, datetime)

str --> datetimedatetime.strptime(str, format)

datetime --> struct time tuple: datetime.timetuple()

 

time

對於時間數據,如2016-05-05 20:28:54,有時須要與時間戳進行相互的運算,此時就須要對兩種形式進行轉換,在Python中,轉換時須要用到time模塊,具體的操做有以下的幾種:

將時間轉換爲時間戳
從新格式化時間
時間戳轉換爲時間
獲取當前時間及將其轉換成時間戳
一、將時間轉換成時間戳

將如上的時間2016-05-05 20:28:54轉換成時間戳,具體的操做過程爲:

利用strptime()函數將時間轉換成時間數組
利用mktime()函數將時間數組轉換成時間戳

#coding:UTF-8
import time

dt = "2016-05-05 20:28:54"

#轉換成時間數組
timeArray = time.strptime(dt, "%Y-%m-%d %H:%M:%S")
#轉換成時間戳
timestamp = time.mktime(timeArray)

print timestamp

二、從新格式化時間

從新格式化時間須要如下的兩個步驟:

利用strptime()函數將時間轉換成時間數組
利用strftime()函數從新格式化時間

#coding:UTF-8
import time

dt = "2016-05-05 20:28:54"

#轉換成時間數組
timeArray = time.strptime(dt, "%Y-%m-%d %H:%M:%S")
#轉換成新的時間格式(20160505-20:28:54)
dt_new = time.strftime("%Y%m%d-%H:%M:%S",timeArray)

print dt_new

三、將時間戳轉換成時間

在時間戳轉換成時間中,首先須要將時間戳轉換成localtime,再轉換成時間的具體格式:

利用localtime()函數將時間戳轉化成localtime的格式
利用strftime()函數從新格式化時間

#coding:UTF-8
import time

timestamp = 1462451334

#轉換成localtime
time_local = time.localtime(timestamp)
#轉換成新的時間格式(2016-05-05 20:28:54)
dt = time.strftime("%Y-%m-%d %H:%M:%S",time_local)

print dt

四、按指定的格式獲取當前時間

利用time()獲取當前時間,再利用localtime()函數轉換爲localtime,最後利用strftime()函數從新格式化時間。

#coding:UTF-8
import time

#獲取當前時間
time_now = int(time.time())
#轉換成localtime
time_local = time.localtime(time_now)
#轉換成新的時間格式(2016-05-09 18:59:20)
dt = time.strftime("%Y-%m-%d %H:%M:%S",time_local)

print dt

datetime

一、當前時間

>>> import time
>>> time.time()
1450681042.751

>>> time.localtime(time.time())
time.struct_time(tm_year=2015, tm_mon=12, tm_mday=21, tm_hour=15, tm_min=0, tm_sec=2, tm_wday=0, tm_yday=355, tm_isdst=0)

>>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
'2015-12-21 15:01:28'


>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2015, 12, 21, 14, 58, 38, 279000)

>>> datetime.today()
datetime.datetime(2015, 12, 21, 14, 59, 20, 204000)

>>> now = datetime.now()
>>> now.year, now.month, now.day, now.hour, now.minute, now.second, now.microsecond

>>> now.isocalendar() # 2015年 第52周 星期一
(2015, 52, 1)

>>> now.isoweekday() # 星期幾,1:Monday; 而 now.weekday() 返回值從0開始

二、字符串轉換爲日期

>>> s='2015-12-21 15:01:28'
>>> timeTuple = datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
datetime.datetime(2015, 12, 21, 15, 1, 28)

>>> datetime.datetime.strftime('%Y/%m/%d %H:%M:%S', timeTuple)


>>> s='2015-12-21 15:01:28'
>>> timeTuple = datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
time.struct_time(tm_year=2015, tm_mon=12, tm_mday=21, tm_hour=15, tm_min=1, tm_sec=28, tm_wday=0, tm_yday=355, tm_isdst=-1)

>>> time.strftime('%Y/%m/%d %H:%M:%S',timeTuple)

三、時間戳

>>> time.mktime(time.strptime(s,'%Y-%m-%d %H:%M:%S'))
1450681288.0

>>> int(time.time())
# timestamp to time tuple in UTC
timestamp = 1226527167.595983
time_tuple = time.gmtime(timestamp)
print repr(time_tuple)
# timestamp to time tuple in local time
timestamp = 1226527167.595983
time_tuple = time.localtime(timestamp)
print repr(time_tuple)

四、日期加減

多加一天
>>> print (datetime.datetime.now()+datetime.timedelta(days=1)).strftime("%Y-%m-%
d %H:%M:%S")
2017-07-16 15:12:42
>>>
多加一小時
>>> print (datetime.datetime.now()+datetime.timedelta(hours=1)).strftime("%Y-%m-
%d %H:%M:%S")
2017-07-15 16:10:43
>>>
多加一分鐘
>>> print (datetime.datetime.now()+datetime.timedelta(minutes=1)).strftime("%Y-%
m-%d %H:%M:%S")
2017-07-15 15:12:56
>>>

Note:

time 是 float 爲基礎,小數點後是毫秒,整數部分是秒。(Java 是毫秒,因此,python_time*1000 == Java_time)

datetime 是int, 略去了毫秒部分。datetime tuple 少於 struct_time

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

相關文章
相關標籤/搜索