1023

Python で UNIX タイムスタンプ (つまり、「1284101485」) を表す文字列があり、それを読み取り可能な日付に変換したいと考えています。を使用するtime.strftimeと、次のようになりますTypeError

>>>import time
>>>print time.strftime("%B %d %Y", "1284101485")

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument must be 9-item sequence, not str
4

18 に答える 18

1430

使用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'))
于 2010-09-10T07:09:25.497 に答える
302
>>> from datetime import datetime
>>> datetime.fromtimestamp(1172969203.1)
datetime.datetime(2007, 3, 4, 0, 46, 43, 100000)

http://seehuhn.de/pages/pdateから取得

于 2010-09-10T06:59:57.103 に答える
188

最も投票数の多い回答は、ローカル タイムゾーンを使用するためエラーが発生しやすい fromtimestamp を使用することを提案しています。問題を回避するためのより良いアプローチは、UTC を使用することです。

datetime.datetime.utcfromtimestamp(posix_time).strftime('%Y-%m-%dT%H:%M:%SZ')

posix_time は、変換する Posix エポック時間です

于 2016-05-12T13:23:00.240 に答える
88
>>> 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'
于 2010-09-10T08:28:06.940 に答える
37

UNIXタイムスタンプからの人間が読めるタイムスタンプについては、以前にスクリプトでこれを使用しました。

import os, datetime

datetime.datetime.fromtimestamp(float(os.path.getmtime("FILE"))).strftime("%B %d, %Y")

出力:

「2012 年 12 月 26 日」

于 2012-12-27T02:11:00.393 に答える
27

このように現在の時刻を変換できます

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
于 2012-03-07T07:30:39.950 に答える
3

データフレームを操作していて、エラーが発生したくない場合。series cannot be converted to class int以下のコードを使用してください。

new_df= pd.to_datetime(df_new['time'], unit='s')
于 2021-08-02T05:20:59.037 に答える
1

私はちょうどうまく使用しました:

>>> type(tstamp)
pandas.tslib.Timestamp
>>> newDt = tstamp.date()
>>> type(newDt)
datetime.date
于 2015-01-16T00:44:17.420 に答える
0

迅速で汚いワンライナー:

'-'.join(str(x) for x in list(tuple(datetime.datetime.now().timetuple())[:6]))

「2013-5-5-1-9-43」

于 2013-05-05T05:10:00.427 に答える