在進行新紀元時間(1970-01-01 00:00:00)以來的秒到實際時間之間轉換的時候 MySQL 根據參數 time_zone 的設置有兩種選擇:
網站建設哪家好,找成都創新互聯!專注于網頁設計、網站建設、微信開發、小程序設計、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了管城免費建站歡迎大家使用!
time_zone?設置為 SYSTEM 的話:使用 sys_time_zone 獲取的 OS 會話時區,同時使用 OS API 進行轉換。對應轉換函數 Time_zone_system::gmt_sec_to_TIME
time_zone?設置為實際的時區的話:比如 ‘+08:00’,那么使用使用 MySQL 自己的方法進行轉換。對應轉換函數 Time_zone_offset::gmt_sec_to_TIME
實際上 Time_zone_system 和 Time_zone_offset 均繼承于 Time_zone 類,并且實現了 Time_zone 類的虛函數進行了重寫,因此上層調用都是 Time_zone::gmt_sec_to_TIME。
1、默認情況下,pandas中的時間序列是單純(naive)的時區,其索引的tz字段為None。
2、可以用時區集生成日期范圍。
3、從單純到本地化的轉換是通過tz_localize方法處理的。
4、一旦時間序列被本地化到某個特定時區,就可以用tz_convert將其轉換到別的時區了。
5、對于上面這種時間序列(它跨越了美國東部時區的夏令時轉變期),我們可以將其本地化到EST,再轉換為UTC或柏林時間。
時間格式轉換分為兩種,時間轉換為字符串和字符串轉換為時間,具體代碼例子如下:
1?import?datetime
2?import?time
3?#?日期轉換為字符串,使用strftime()函數
4?#?time.strftime(format[,?t])
5
6?print?datetime.datetime.now()
7?print?datetime.datetime.now().strftime("%Y-%m-%d
%H:%M:%S")
8?print?datetime.datetime.now().strftime("%b
%d?%Y?%H:%M:%S")
9?print?datetime.datetime.now().strftime("%c
%d?%Y?%H:%M:%S")
10?#?字符串轉換為日期,使用strptime()函數
11?t?=?(2009,?2,?17,?8,?3,?38,?1,?48,?0)
12?t?=?time.mktime(t)
13?print?time.strftime("%b?%d?%Y?%H:%M:%S",time.gmtime(t))
14?print?time.strftime("%Y-%m-%d?%H:%M:%S",time.gmtime(t))
注:格式字符說明:
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
當前時區的名稱
%%
%號本身
python中的時間模塊主要有time, datetime。
I, time模塊
time模塊中包含了四種時間格式:
float格式,即給定時間相對于epoch增加的秒數
tuple格式,一個九元組 (tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst)
string格式,'Mon Feb 6 15:00:06 2012'
format格式,以指定的格式生成的時間
針對這幾種時間格式,time模塊提供了函數在格式之間相互轉換。
asctime(tuple) -string
ctime(float) -string
gmtime(float) -tuple
localtime(float) -tuple
mktime(tuple) -float
strftime(format, tuple) -format string
strptime(formatstring, format) -tuple
time() - float
上述函數中,除了time()函數直接返回當前時間相對于epoch的秒數外,其他函數都要求有時間的輸入,如果沒有輸入,則默認使用當前時間。
另外,strftime和strptime中的format使用下面的格式:
%a 英文星期簡寫
%A 英文星期的完全
%b 英文月份的簡寫
%B 英文月份的完全
%c 顯示本地日期時間
%d 日期,取1-31
%H 小時, 0-23
%I 小時, 0-12
%m 月, 01 -12
%M 分鐘,1-59
%j 年中當天的天數
%w 顯示今天是星期幾
%W 第幾周
%x 當天日期
%X 本地的當天時間
%y 年份 00-99間
%Y 年份的完整拼寫
%S 秒(00-59)
除了上述的時間轉換函數之外,模塊還提供了下面的函數:
clock() 返回進程的創建時間,以秒計數的float
sleep(float) sleep一段時間,以秒計數
tzset() 更改時區
II, datetime
datetime模塊定義了下面這幾個類:
datetime.date:表示日期的類。常用的屬性有year, month, day;datetime.time:表示時間的類。常用的屬性有hour, minute, second, microsecond;datetime.datetime:表示日期時間。datetime.timedelta:表示時間間隔,即兩個時間點之間的長度。datetime.tzinfo:與時區有關的相關信息。(這里不詳細充分討論該類,感興趣的童鞋可以參考python手冊)
注 :上面這些類型的對象都是不可變(immutable)的。
下面詳細介紹這些類的使用方式。
date類
date類表示一個日期。日期由年、月、日組成(地球人都知道~~)。date類的構造函數如下:
class datetime.date(year, month, day):參數的意義就不多作解釋了,只是有幾點要注意一下:
year的范圍是[MINYEAR, MAXYEAR],即[1, 9999];month的范圍是[1, 12]。(月份是從1開始的,不是從0開始的~_~);day的最大值根據給定的year, month參數來決定。例如閏年2月份有29天;
date類定義了一些常用的類方法與類屬性,方便我們操作:
date.max、date.min:date對象所能表示的最大、最小日期;date.resolution:date對象表示日期的最小單位。這里是天。date.today():返回一個表示當前本地日期的date對象;date.fromtimestamp(timestamp):根據給定的時間戮,返回一個date對象;datetime.fromordinal(ordinal):將Gregorian日歷時間轉換為date對象;(Gregorian Calendar :一種日歷表示方法,類似于我國的農歷,西方國家使用比較多,此處不詳細展開討論。)
這個問題得分成幾個子問題
1 數據庫本身的時區
2 數據庫里數據的時區
3 python代碼里的時區
首先對1你可以通過命令去設置數據庫的時區 像mysql直接用sql語句就能設置
其次對2 在存儲時間時盡量用timestamp去存儲 這樣讀出來可以方便的轉成所需用的時區的時間
3 python自己的時區 比如你用datetime生成時間時需要每次都記得時區設置 在django和flask里設置好默認時區
做好這三點才能保證程序和數據庫和數據的時區保持統一
新聞標題:包含python時區轉換函數的詞條
轉載來源:http://m.kartarina.com/article34/hgjese.html
成都網站建設公司_創新互聯,為您提供軟件開發、網站設計、網站收錄、手機網站建設、網站策劃、網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯