Python基本時間轉換


時間轉換

python中處理時間的時候,最常用的就是字符形式與時間戳之間的轉換。 把最基本的轉換在這里記下來

string -> timestamp

import time
import dateutil.parser as dateparser

def str_to_timestamp(time_str)
    dt = dateparser.parse(time_str)
    # OR: dt = time.strptime(datetimestring, fmt)
    return time.mktime(dt.timetuple())

datetimestring = 'Fri, 08 Jun 2012 22:40:26 GMT'
str_to_timestamp(datetimestring)

timestamp -> string

import time

def timestamp_to_str(ts, fmt='%Y-%m-%d %H:%M:%S'):
    return time.strftime(fmt, time.localtime(timestamp))

timestamp = time.time()
timestamp_to_str(timestamp)

python內置的時間數據結構

python內部使用一個類似於namedtuple的數據結構來存儲時間。 這個數據結構有9個字段,可以用數字下標訪問,也可以用名字訪問。

time.struct_time(
        tm_year=2014,
        tm_mon=9,
        tm_mday=1,
        tm_hour=9,
        tm_min=0,
        tm_sec=0,
        tm_wday=0,    # 星期幾, 0~6
        tm_yday=244,  # 本年的第幾天, 1~366
        tm_isdst=0    # 是否夏令時
        )

Timestamp的備注

這里有一個小細節,就是時間戳都是基於標准時區的,和北京時間有8個小時的時差。 這個時差可以通過time.timezone獲得,即標准時區和本地時區之間相差的秒數。 對於北京時間,這個值是-28800(8*3600)。 所以,當我們通過將時間戳對86400(一天的秒數)取模以獲取從零點開始的秒數的時候, 將存在8個小時的差別。也就是說,

time.mktime(dateparser.parse('2014-09-01 09:00:00').timetuple()) % 86400

將輸出3600, 與上午9點正好差了8個小時。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM