Converting unix timestamp string to readable date
我有一个用python表示unix时间戳(即"1284101485")的字符串,我想把它转换成一个可读的日期。当我使用
1 2 3 4 5 6 | >>>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 |
使用
1 2 3 4 5 6 | 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')) |
1 2 3 | >>> from datetime import datetime >>> datetime.fromtimestamp(1172969203.1) datetime.datetime(2007, 3, 4, 0, 46, 43, 100000) |
采取从http:/ / / / pdate seehuhn.de页
建议使用fromtimestamp评为最要之是因为它错误使用当地的时区。为了避免问题的一个更好的方法是:使用UTC
1 | datetime.datetime.utcfromtimestamp(posix_time).strftime('%Y-%m-%dT%H:%M:%SZ') |
在POSIX POSIX时间是_时代时,你想转换
1 2 3 4 5 | >>> 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偏移和Python在过去有没有访问到数据库是使用
1 2 3 4 5 6 7 | #!/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) |
要显示它,你可以使用任何时间格式不支持您的系统,例如:
1 2 | 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时间,而不是去读:
1 2 | utc_time = datetime.utcfromtimestamp(unix_timestamp) print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)")) |
如果你真的在乎的时区问题,可能影响我的约会或是返回如果Python已经进入雅轩数据库对您的系统
1 2 | local_time = datetime.fromtimestamp(unix_timestamp) print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f")) |
在Python中,你可以得到一个时区3,认识到仅用程序(UTC时间偏移可能是错的如果Python没有进入雅轩数据库在您的系统,例如,在Windows中):
1 2 3 4 5 6 | #!/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)")) |
功能模块是从
1 2 3 4 5 6 7 8 | #!/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时间戳,我有这个脚本中使用过:
1 2 3 | import os, datetime datetime.datetime.fromtimestamp(float(os.path.getmtime("FILE"))).strftime("%B %d, %Y") |
输出:
"2012年12月26日,"
你可以这样转换当前时间
1 2 3 | t=datetime.fromtimestamp(time.time()) t.strftime('%Y-%m-%d') '2012-03-07' |
在转换到不同的格式的日期字符串。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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日期转换,使用:
1 2 3 4 5 | import pandas result_ms=pandas.to_datetime('1493530261000',unit='ms') str(result_ms) Output: '2017-04-30 05:31:01' |
10位(秒)日期转换秒,使用:
1 2 3 4 5 | import pandas result_s=pandas.to_datetime('1493530261',unit='s') str(result_s) Output: '2017-04-30 05:31:01' |
1 2 3 | timestamp ="124542124" value = datetime.datetime.fromtimestamp(timestamp) exct_time = value.strftime('%d %B %Y %H:%M:%S') |
得到的日期时间戳时间从读,所以你可以改变格式的日期。
1 2 3 | import datetime temp = datetime.datetime.fromtimestamp(1386181800).strftime('%Y-%m-%d %H:%M:%S') print temp |
这是另一种方式可以做使用gmtime和格式的功能;
1 2 | from time import gmtime print('{}-{}-{} {}:{}:{}'.format(*gmtime(1538654264.703337))) |
输出:
我只是成功的使用:
1 2 3 4 5 | >>> type(tstamp) pandas.tslib.Timestamp >>> newDt = tstamp.date() >>> type(newDt) datetime.date |
你可以使用简单的_约会让轻松:
1 2 | import date_converter my_date_string = date_converter.timestamp_to_string(1284101485,"%B %d, %Y") |
快速和肮脏的一班轮。
1 | '-'.join(str(x) for x in list(tuple(datetime.datetime.now().timetuple())[:6])) |
"2013年- 5 - 1 9 43?