在Javascript中,Date.prototype.toISOString
提供ISO 8601 UTC日期时间字符串:
new Date().toISOString()
// "2014-07-24T00:19:37.439Z"
是否有一个Python函数的行为与Javascript'匹配?
尝试:
Python的datetime.datetime.isoformat
类似,但不完全相同:
datetime.datetime.now().isoformat()
// '2014-07-24T00:19:37.439728'
使用pytz
我至少可以使UTC明确:
pytz.utc.localize(datetime.now()).isoformat())
// '2014-07-24T00:19:37.439728+00:00'
答案 0 :(得分:2)
您可以使用此代码:
import datetime
now = datetime.datetime.now()
iso_time = now.strftime("%Y-%m-%dT%H:%M:%SZ")
答案 1 :(得分:2)
我试图将字符串格式化为javascript输出中的字符串。
from datetime import datetime
def iso_format(dt):
try:
utc = dt + dt.utcoffset()
except TypeError as e:
utc = dt
isostring = datetime.strftime(utc, '%Y-%m-%dT%H:%M:%S.{0}Z')
return isostring.format(int(round(utc.microsecond/1000.0)))
print iso_format(datetime.now())
#"2014-07-24T00:19:37.439Z"
答案 2 :(得分:0)
是否存在与Javascript匹配的行为的Python函数?
不在标准库中,但您可以自己构建。
答案 3 :(得分:0)
# Used dateutil package from https://pypi.org/project/python-dateutil/
import datetime
import dateutil.tz
def iso_format(dt):
try:
utc_dt = dt.astimezone(dateutil.tz.tzutc())
except ValueError:
utc_dt = dt
ms = "{:.3f}".format(utc_dt.microsecond / 1000000.0)[2:5]
return datetime.datetime.strftime(utc_dt, '%Y-%m-%dT%H:%M:%S.{0}Z'.format(ms))
答案 4 :(得分:0)
在Python 3.6+中使用f字符串
from datetime import datetime
f'{datetime.now():%Y-%m-%dT%H:%M:%SZ}'
答案 5 :(得分:0)
这是对我所做的,仅使用python的标准库即可:
from datetime import datetime, timezone
def isoformat_js(dt: datetime):
return (
dt.astimezone(timezone.utc)
.isoformat(timespec="milliseconds")
.replace("+00:00", "Z")
)
isoformat_js(datetime(2014, 7, 24, 0, 19, 37, 439000))
# => '2014-07-24T00:19:37.439Z'