2024-09-28 22:43:25 发布
网友
我想把日期格式化成这样
2015-12-02T12:57:17+00:00
这是我的密码
time.strftime("%Y-%m-%dT%H:%M:%S%z", time.gmtime())
从而得出这个结果
2015-12-02T12:57:17+0000
我看不到%z的任何其他变体可以提供+00:00的正确格式?正确的方法是什么?
我开发了这个函数:
def iso_8601_format(dt): """YYYY-MM-DDThh:mm:ssTZD (1997-07-16T19:20:30-03:00)""" if dt is None: return "" fmt_datetime = dt.strftime('%Y-%m-%dT%H:%M:%S') tz = dt.utcoffset() if tz is None: fmt_timezone = "+00:00" else: fmt_timezone = str.format('{0:+06.2f}', float(tz.total_seconds() / 3600)) return fmt_datetime + fmt_timezone
这对你很有用:
Python - Convert UTC datetime string to local datetime
我复制代码是为了更容易处理,我指出这是另一个人的答案。
from datetime import datetime,tzinfo,timedelta class Zone(tzinfo): def __init__(self,offset,isdst,name): self.offset = offset self.isdst = isdst self.name = name def utcoffset(self, dt): return timedelta(hours=self.offset) + self.dst(dt) def dst(self, dt): return timedelta(hours=1) if self.isdst else timedelta(0) def tzname(self,dt): return self.name GMT = Zone(0,False,'GMT') EST = Zone(-5,False,'EST') print datetime.utcnow().strftime('%m/%d/%Y %H:%M:%S %Z') print datetime.now(GMT).strftime('%m/%d/%Y %H:%M:%S %Z') print datetime.now(EST).strftime('%m/%d/%Y %H:%M:%S %Z') t = datetime.strptime('2011-01-21 02:37:21','%Y-%m-%d %H:%M:%S') t = t.replace(tzinfo=GMT) print t print t.astimezone(EST)
我已经在我的Python笔记本上试过了,效果非常好。
如果“%z”选项依赖于平台,那么在之后添加:如何?
:
t_str = time.strftime("%Y-%m-%dT%H:%M:%S%z", time.gmtime()) t_str = t_str if t_str[-3] == ':' else t_str[:-2] + ':' + t_str[-2:]
我开发了这个函数:
这对你很有用:
Python - Convert UTC datetime string to local datetime
我复制代码是为了更容易处理,我指出这是另一个人的答案。
我已经在我的Python笔记本上试过了,效果非常好。
如果“%z”选项依赖于平台,那么在之后添加
:
如何?相关问题 更多 >
编程相关推荐