유닉스 타임 스탬프 문자열을 읽을 수있는 날짜로 변환
파이썬에서 유닉스 타임 스탬프 (예 : "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'
두 부분이 있습니다.
- unix 타임 스탬프 ( "epoch 이후 초")를 현지 시간으로 변환합니다.
- 원하는 형식으로 현지 시간을 표시합니다.
현지 시간대가 과거에 다른 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"))
Python 3에서는 stdlib 만 사용하여 시간대 인식 날짜 시간을 얻을 수 있습니다 (예 : Windows에서 Python이 시스템의 tz 데이터베이스에 액세스 할 수없는 경우 UTC 오프셋이 잘못 될 수 있음) :
#!/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)"))
Functions from the time
module are thin wrappers around the corresponding C API and therefore they may be less portable than the corresponding datetime
methods otherwise you could use them too:
#!/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))
For a human readable timestamp from a UNIX timestamp, I have used this in scripts before:
import os, datetime
datetime.datetime.fromtimestamp(float(os.path.getmtime("FILE"))).strftime("%B %d, %Y")
Output:
'December 26, 2012'
You can convert the current time like this
t=datetime.fromtimestamp(time.time())
t.strftime('%Y-%m-%d')
'2012-03-07'
To convert a date in string to different formats.
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
Other than using time/datetime package, pandas can also be used to solve the same problem.Here is how we can use pandas to convert timestamp to readable date:
Timestamps can be in two formats:
13 digits(milliseconds) - To convert milliseconds to date, use:
import pandas result_ms=pandas.to_datetime('1493530261000',unit='ms') str(result_ms) Output: '2017-04-30 05:31:01'
10 digits(seconds) - To convert seconds to date, use:
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')
Get the readable date from timestamp with time also, also you can change the format of the date.
Another way that this can be done using gmtime and format function;
from time import gmtime
print('{}-{}-{} {}:{}:{}'.format(*gmtime(1538654264.703337)))
Output: 2018-10-4 11:57:44
import datetime
temp = datetime.datetime.fromtimestamp(1386181800).strftime('%Y-%m-%d %H:%M:%S')
print temp
i just successfully used:
>>> type(tstamp)
pandas.tslib.Timestamp
>>> newDt = tstamp.date()
>>> type(newDt)
datetime.date
quick and dirty one liner:
'-'.join(str(x) for x in list(tuple(datetime.datetime.now().timetuple())[:6]))
'2013-5-5-1-9-43'
You can use easy_date to make it easy:
import date_converter
my_date_string = date_converter.timestamp_to_string(1284101485, "%B %d, %Y")
참고URL : https://stackoverflow.com/questions/3682748/converting-unix-timestamp-string-to-readable-date
'Program Tip' 카테고리의 다른 글
왜 px 대신 em? (0) | 2020.09.29 |
---|---|
.NET에서 줄 바꿈으로 문자열을 분할하는 가장 쉬운 방법은 무엇입니까? (0) | 2020.09.29 |
특수 달러 기호 쉘 변수는 무엇입니까? (0) | 2020.09.29 |
상대 경로에서 모듈 가져 오기 (0) | 2020.09.29 |
문자열이 유효한 URL인지 확인하는 가장 좋은 정규 표현식은 무엇입니까? (0) | 2020.09.29 |