python unix时间戳转换成时间_关于python:将unix时间戳字符串转换为可读日期
我有一個用python表示unix時間戳(即"1284101485")的字符串,我想把它轉換成一個可讀的日期。當我使用time.strftime時,我得到一個TypeError:
>>>import time
>>>print time.strftime("%B %d %Y","1284101485")
Traceback (most recent call last):
File"", line 1, in
TypeError: argument must be 9-item sequence, not str
返回問題鏈接:stackoverflow.com/q/19801727/3273031
使用datetime模塊:
from datetime import datetime
ts = int("1284101485")
# if you encounter a"year is out of range" error the timestamp
# may be in milliseconds, try `ts /= 1000` in that case
print(datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S'))
如果本地時區具有不同的UTC偏移量,則.fromtimestamp()可能在過去的日期失敗。您需要一個歷史時區數據庫,如pytz模塊(或您的操作系統)提供的數據庫。或者只在UTC工作,使用.utcfromtimestamp()。
@J.F.Sebastian你提到過這可能會在幾條評論中失敗-請你詳細說明一下為什么過去的日期/時間會失敗?(從投票結果來看,很多人都同意你的觀點,并且認為這很簡單)任何一個Unix時間戳都有一個簡單的等效日期/時間嗎?
@davidhood2采用python無法訪問TZ數據庫(windows)的系統,將本地時區設置為過去具有不同UTC偏移量的時區(例如歐洲/莫斯科),使用過去的時間戳調用fromTimestamp()(2011-)。將結果與使用pytz計算的值進行比較。如果不清楚,請單獨問一個堆棧溢出問題。
@大衛:我已經發表了自己的答案,證明了pytz的解決方案。
一個導入點是這需要一個時間戳,從紀元開始,以秒為單位;如果你有毫秒,你必須除以1000,正如我剛剛發現的那樣。
使用strftime比使用"{:%Y-%m-%d %H:%M:%S}".format(dateobj)有優勢嗎?
根據python文檔,__format__()與strftime()相同,但我只喜歡strftime()。
如果您得到的是ValueError: year VALUE is out of range,這意味著您使用的是毫秒(unix時間戳是13位數字)。以上函數僅在unix時間戳(秒)內有效。如果使用的是毫秒,請將該值除以1000。stackoverflow.com/q/31548132/2960555
如果我想包括毫秒呢?
@用戶傳遞一個浮點值,例如,如果有1234毫秒,則傳遞1.234秒(在十進制中很容易除以1000:只需將小數點向左移動3個位置即可)。
或者只是datetime.datetime.utcfromtimestamp(1398385815)。
>>> from datetime import datetime
>>> datetime.fromtimestamp(1172969203.1)
datetime.datetime(2007, 3, 4, 0, 46, 43, 100000)
采取從http:/ / / / pdate seehuhn.de頁
建議使用fromtimestamp評為最要之是因為它錯誤使用當地的時區。為了避免問題的一個更好的方法是:使用UTC
datetime.datetime.utcfromtimestamp(posix_time).strftime('%Y-%m-%dT%H:%M:%SZ')
在POSIX POSIX時間是_時代時,你想轉換
導入日期時間,pytz datetime.datetime(1990,1,1,tzinfo=pytz.utc)
>>> import time
>>> time.ctime(int("1284101485"))
'Fri Sep 10 16:51:25 2010'
>>> time.strftime("%D %H:%M", time.localtime(int("1284101485")))
'09/10/10 16:51'
如果本地時區具有不同的UTC偏移量,則time.ctime()和time.localtime()可能在過去的日期失敗。您需要一個歷史時區數據庫,如pytz模塊(或您的操作系統)提供的數據庫。或者在UTC工作,使用time.gmtime()。datetime可能提供更寬的日期范圍,因此可以使用datetime.utcfromtimestamp()代替time功能。
有兩個部件:
UNIX時間戳轉換("")。")到本地時間
當地的時間顯示在所需的格式。
一單把當地的便攜式作品時,即使是一個不同的本地時區UTC偏移和Python在過去有沒有訪問到數據庫是使用pytzTZ時區:
#!/usr/bin/env python
from datetime import datetime
import tzlocal ?# $ pip install tzlocal
unix_timestamp = float("1284101485")
local_timezone = tzlocal.get_localzone() # get pytz timezone
local_time = datetime.fromtimestamp(unix_timestamp, local_timezone)
要顯示它,你可以使用任何時間格式不支持您的系統,例如:
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f%z (%Z)"))
print(local_time.strftime("%B %d %Y")) ?# print date in your format
如果你需要一個本地時間(UTC時間,而不是去讀:
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
如果你真的在乎的時區問題,可能影響我的約會或是返回如果Python已經進入雅軒數據庫對您的系統
local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))
在Python中,你可以得到一個時區3,認識到僅用程序(UTC時間偏移可能是錯的如果Python沒有進入雅軒數據庫在您的系統,例如,在Windows中):
#!/usr/bin/env python3
from datetime import datetime, timezone
utc_time = datetime.fromtimestamp(unix_timestamp, timezone.utc)
local_time = utc_time.astimezone()
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f%z (%Z)"))
功能模塊是從time包裝薄膜在相應的C API,因此他們不可能比相應的便攜式datetime否則你可以使用他們的方法是:
#!/usr/bin/env python
import time
unix_timestamp ?= int("1284101485")
utc_time = time.gmtime(unix_timestamp)
local_time = time.localtime(unix_timestamp)
print(time.strftime("%Y-%m-%d %H:%M:%S", local_time))
print(time.strftime("%Y-%m-%d %H:%M:%S+00:00 (UTC)", utc_time))
一個人類可讀的時間戳從UNIX時間戳,我有這個腳本中使用過:
import os, datetime
datetime.datetime.fromtimestamp(float(os.path.getmtime("FILE"))).strftime("%B %d, %Y")
輸出:
"2012年12月26日,"
為什么這次投票被否決了一次?如果你投了反對票,你至少應該解釋為什么你會投正確的票?
我編輯并增加了清晰度。我用這個,仍然用這個代碼來打印清除時間戳。
誰又投了反對票?評論和解釋,而不是成為問題的一部分。
我的猜測是:它沒有增加已經證明了兩種方法的公認答案:.fromtimestamp()和.strftime()方法。注:getmtime()已經返回了一個float。
又一次投反對票?如果你要投反對票,至少要說明原因。
又一次投反對票?如果你要投反對票,至少要說明原因。
你可以這樣轉換當前時間
t=datetime.fromtimestamp(time.time())
t.strftime('%Y-%m-%d')
'2012-03-07'
在轉換到不同的格式的日期字符串。
import datetime,time
def createDateObject(str_date,strFormat="%Y-%m-%d"):
timeStamp = time.mktime(time.strptime(str_date,strFormat))
return datetime.datetime.fromtimestamp(timeStamp)
def FormatDate(objectDate,strFormat="%Y-%m-%d"):
return objectDate.strftime(strFormat)
Usage
=====
o=createDateObject('2013-03-03')
print FormatDate(o,'%d-%m-%Y')
Output 03-03-2013
使用時間/日期時間比其他包裝,熊貓也可以用來解決同樣的問題。這是我們如何能夠使用熊貓轉換時間戳到讀日期:
時間戳可以在雙格式:
13位(milliseconds)milliseconds日期轉換,使用:
import pandas
result_ms=pandas.to_datetime('1493530261000',unit='ms')
str(result_ms)
Output: '2017-04-30 05:31:01'
10位(秒)日期轉換秒,使用:
import pandas
result_s=pandas.to_datetime('1493530261',unit='s')
str(result_s)
Output: '2017-04-30 05:31:01'
timestamp ="124542124"
value = datetime.datetime.fromtimestamp(timestamp)
exct_time = value.strftime('%d %B %Y %H:%M:%S')
得到的日期時間戳時間從讀,所以你可以改變格式的日期。
這個答案加了什么?
import datetime
temp = datetime.datetime.fromtimestamp(1386181800).strftime('%Y-%m-%d %H:%M:%S')
print temp
這是另一種方式可以做使用gmtime和格式的功能;
from time import gmtime
print('{}-{}-{} {}:{}:{}'.format(*gmtime(1538654264.703337)))
輸出:2018-10-4 11:57:44
我只是成功的使用:
>>> type(tstamp)
pandas.tslib.Timestamp
>>> newDt = tstamp.date()
>>> type(newDt)
datetime.date
非常感謝。這正是我要找的!
你可以使用簡單的_約會讓輕松:
import date_converter
my_date_string = date_converter.timestamp_to_string(1284101485,"%B %d, %Y")
每個程序都有自己的日期和時間轉換器。我們不應該為此使用mods/frameworks
strptime和strftime不是直觀的…甚至不可讀…但我理解并尊重你的意見
"不必使用"是錯誤的。這取決于語言和內置libs的質量。JavaScript具有Simult.JS和Java具有JoDA時間,它們比各自內置的日期和時間轉換UTIL更受歡迎(因此JoDA時間后來影響了Java 8更新后的標準LIBS)。也就是說,除非這個問題需要優秀的第三方庫,否則最好根據標準庫給出答案。
我在Nikosventouras站著糾正。我第一次遇到了"JS日期在IE中的行為不同"的問題。所以我最終使用了moment.js
快速和骯臟的一班輪。
'-'.join(str(x) for x in list(tuple(datetime.datetime.now().timetuple())[:6]))
"2013年- 5 - 1 9 43?
或者更簡潔地說:"-".join(map(str,datetime.datetime.now().timetuple()[:6]))
@Jellezijlstra,我更喜歡生成器表達式而不是映射。
"2013-5-5-1-9-43"是哪種日期格式?我從來沒有見過這種格式作為日期/時間的有效表示。
你能詳細說明一下什么使這成為一個無效的代表@madoki嗎?你是說不標準嗎?與大多數其他答案相比,它的主要優勢在于能夠將其包含在文件或目錄路徑中,因為空間和冒號不在標準的UNIX目錄字符集中。如stackoverflow.com/a/458001/209246
總結
以上是生活随笔為你收集整理的python unix时间戳转换成时间_关于python:将unix时间戳字符串转换为可读日期的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过堡垒机rdp 黑屏_[调优]彻底解决
- 下一篇: vrish 删除虚机_使用Kvm命令集管