日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python unix时间戳转换成时间_关于python:将unix时间戳字符串转换为可读日期

發(fā)布時間:2025/4/16 python 99 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python unix时间戳转换成时间_关于python:将unix时间戳字符串转换为可读日期 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我有一個用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'))

如果本地時區(qū)具有不同的UTC偏移量,則.fromtimestamp()可能在過去的日期失敗。您需要一個歷史時區(qū)數(shù)據(jù)庫,如pytz模塊(或您的操作系統(tǒng))提供的數(shù)據(jù)庫。或者只在UTC工作,使用.utcfromtimestamp()。

@J.F.Sebastian你提到過這可能會在幾條評論中失敗-請你詳細說明一下為什么過去的日期/時間會失敗?(從投票結果來看,很多人都同意你的觀點,并且認為這很簡單)任何一個Unix時間戳都有一個簡單的等效日期/時間嗎?

@davidhood2采用python無法訪問TZ數(shù)據(jù)庫(windows)的系統(tǒng),將本地時區(qū)設置為過去具有不同UTC偏移量的時區(qū)(例如歐洲/莫斯科),使用過去的時間戳調(diào)用fromTimestamp()(2011-)。將結果與使用pytz計算的值進行比較。如果不清楚,請單獨問一個堆棧溢出問題。

@大衛(wèi):我已經(jīng)發(fā)表了自己的答案,證明了pytz的解決方案。

一個導入點是這需要一個時間戳,從紀元開始,以秒為單位;如果你有毫秒,你必須除以1000,正如我剛剛發(fā)現(xiàn)的那樣。

使用strftime比使用"{:%Y-%m-%d %H:%M:%S}".format(dateobj)有優(yōu)勢嗎?

根據(jù)python文檔,__format__()與strftime()相同,但我只喜歡strftime()。

如果您得到的是ValueError: year VALUE is out of range,這意味著您使用的是毫秒(unix時間戳是13位數(shù)字)。以上函數(shù)僅在unix時間戳(秒)內(nèi)有效。如果使用的是毫秒,請將該值除以1000。stackoverflow.com/q/31548132/2960555

如果我想包括毫秒呢?

@用戶傳遞一個浮點值,例如,如果有1234毫秒,則傳遞1.234秒(在十進制中很容易除以1000:只需將小數(shù)點向左移動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評為最要之是因為它錯誤使用當?shù)氐臅r區(qū)。為了避免問題的一個更好的方法是:使用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'

如果本地時區(qū)具有不同的UTC偏移量,則time.ctime()和time.localtime()可能在過去的日期失敗。您需要一個歷史時區(qū)數(shù)據(jù)庫,如pytz模塊(或您的操作系統(tǒng))提供的數(shù)據(jù)庫。或者在UTC工作,使用time.gmtime()。datetime可能提供更寬的日期范圍,因此可以使用datetime.utcfromtimestamp()代替time功能。

有兩個部件:

UNIX時間戳轉換("")。")到本地時間

當?shù)氐臅r間顯示在所需的格式。

一單把當?shù)氐谋銛y式作品時,即使是一個不同的本地時區(qū)UTC偏移和Python在過去有沒有訪問到數(shù)據(jù)庫是使用pytzTZ時區(qū):

#!/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)

要顯示它,你可以使用任何時間格式不支持您的系統(tǒng),例如:

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)"))

如果你真的在乎的時區(qū)問題,可能影響我的約會或是返回如果Python已經(jīng)進入雅軒數(shù)據(jù)庫對您的系統(tǒng)

local_time = datetime.fromtimestamp(unix_timestamp)

print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))

在Python中,你可以得到一個時區(qū)3,認識到僅用程序(UTC時間偏移可能是錯的如果Python沒有進入雅軒數(shù)據(jù)庫在您的系統(tǒng),例如,在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日,"

為什么這次投票被否決了一次?如果你投了反對票,你至少應該解釋為什么你會投正確的票?

我編輯并增加了清晰度。我用這個,仍然用這個代碼來打印清除時間戳。

誰又投了反對票?評論和解釋,而不是成為問題的一部分。

我的猜測是:它沒有增加已經(jīng)證明了兩種方法的公認答案:.fromtimestamp()和.strftime()方法。注:getmtime()已經(jīng)返回了一個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

使用時間/日期時間比其他包裝,熊貓也可以用來解決同樣的問題。這是我們?nèi)绾文軌蚴褂眯茇堔D換時間戳到讀日期:

時間戳可以在雙格式:

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不是直觀的…甚至不可讀…但我理解并尊重你的意見

"不必使用"是錯誤的。這取決于語言和內(nèi)置libs的質(zhì)量。JavaScript具有Simult.JS和Java具有JoDA時間,它們比各自內(nèi)置的日期和時間轉換UTIL更受歡迎(因此JoDA時間后來影響了Java 8更新后的標準LIBS)。也就是說,除非這個問題需要優(yōu)秀的第三方庫,否則最好根據(jù)標準庫給出答案。

我在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嗎?你是說不標準嗎?與大多數(shù)其他答案相比,它的主要優(yōu)勢在于能夠?qū)⑵浒谖募蚰夸浡窂街?#xff0c;因為空間和冒號不在標準的UNIX目錄字符集中。如stackoverflow.com/a/458001/209246

總結

以上是生活随笔為你收集整理的python unix时间戳转换成时间_关于python:将unix时间戳字符串转换为可读日期的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。