[python] 유닉스 타임 스탬프 문자열을 읽을 수있는 날짜로 변환

파이썬에서 유닉스 타임 스탬프 (예 : “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



답변

사용 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'))


답변

>>> from datetime import datetime
>>> datetime.fromtimestamp(1172969203.1)
datetime.datetime(2007, 3, 4, 0, 46, 43, 100000)

http://seehuhn.de/pages/pdate 에서 가져온


답변

가장 투표 된 답변은 로컬 시간대를 사용하므로 오류가 발생하기 쉬운 fromtimestamp를 사용하는 것이 좋습니다. 문제를 피하기 위해 더 나은 방법은 UTC를 사용하는 것입니다.

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

posix_time은 변환하려는 Posix epoch 시간입니다.


답변

>>> 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'


답변

두 부분이 있습니다 :

  1. 유닉스 타임 스탬프 ( “epoch 이후의 초”)를 현지 시간으로 변환
  2. 현지 시간을 원하는 형식으로 표시하십시오.

과거에 현지 시간대가 다른 utc 오프셋을 가지고 있고 파이썬이 tz 데이터베이스에 액세스 할 수없는 경우에도 작동하는 현지 시간을 얻는 휴대용 방법은 pytz시간대 를 사용하는 것입니다 .

#!/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이 시스템의 tz 데이터베이스에 액세스 할 수있는 경우 :

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

파이썬 3에서는 stdlib 만 사용하여 시간대 인식 날짜 시간을 얻을 수 있습니다 (파이썬이 시스템의 tz 데이터베이스에 액세스 할 수없는 경우 UTC 오프셋은 잘못 될 수 있습니다 (예 : 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))  


답변

유닉스 타임 스탬프의 사람이 읽을 수있는 타임 스탬프를 위해, 나는 이것을 전에 스크립트에서 사용했습니다 :

import os, datetime

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

산출:

‘2012 년 12 월 26 일’


답변

현재 시간을 이렇게 변환 할 수 있습니다

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