def*_*ode 50 python datetime datetime-format
我需要生成一个与iso格式匹配的时间字符串yyyy-mm-ddThh:mm:ss.ssssss-ZO:NE.在now()和utcnow()类方法几乎做我想做的.
>>> import datetime
>>> #time adjusted for current timezone
>>> datetime.datetime.now().isoformat()
'2010-08-03T03:00:00.000000'
>>> #unadjusted UTC time
>>> datetime.datetime.utcnow().isoformat()
'2010-08-03T10:00:00.000000'
>>>
>>> #How can I do this?
>>> datetime.datetime.magic()
'2010-08-03T10:00:00.000000-07:00'
Run Code Online (Sandbox Code Playgroud)
jfs*_*jfs 79
要在Python 3.2+中获取UTC的当前时间:
>>> from datetime import datetime, timezone
>>> datetime.now(timezone.utc).isoformat()
'2015-01-27T05:57:31.399861+00:00'
Run Code Online (Sandbox Code Playgroud)
要获得Python 3.3+的本地时间:
>>> from datetime import datetime, timezone
>>> datetime.now(timezone.utc).astimezone().isoformat()
'2015-01-27T06:59:17.125448+01:00'
Run Code Online (Sandbox Code Playgroud)
说明:以UTC时间datetime.now(timezone.utc)生成时区感知datetime对象.astimezone()然后datetime,如果没有参数调用,则将对象的时区更改为系统的语言环境时区.datetime然后,时区感知对象会自动生成正确的ISO格式.
Ofr*_*viv 37
您需要使您的日期时间对象时区识别.来自datetime文档:
日期和时间对象有两种:"天真"和"意识".这种区别是指对象是否具有时区,夏令时或其他类型的算法或政治时间调整的概念.天真的日期时间对象是否代表协调世界时(UTC),当地时间或某个其他时区的时间完全取决于程序,就像程序一样,特定数字是代表米,英里还是质量.天真的日期时间对象易于理解和使用,代价是忽略了现实的某些方面.
当您有一个知道的日期时间对象时,您可以使用isoformat()并获得所需的输出.
要使你的日期时间对象有意识,你需要继承tzinfo,就像这里的第二个例子一样,或者更简单 - 使用一个为你做的包,比如pytz或python-dateutil
使用pytz,这看起来像:
import datetime, pytz
datetime.datetime.now(pytz.timezone('US/Central')).isoformat()
Run Code Online (Sandbox Code Playgroud)
您也可以控制输出格式,如果你使用的strftime与"%Z"格式指令一样
datetime.datetime.now(pytz.timezone('US/Central')).strftime('%Y-%m-%dT%H:%M:%S.%f%z')
Run Code Online (Sandbox Code Playgroud)
Wes*_*ner 17
带箭头:
>>> import arrow
>>> arrow.now().isoformat()
'2015-04-17T06:36:49.463207-05:00'
>>> arrow.utcnow().isoformat()
'2015-04-17T11:37:17.042330+00:00'
Run Code Online (Sandbox Code Playgroud)
您可以在 Python 2.7+ 中使用以下命令python-dateutil(默认安装在 Mac 上):
>>> from datetime import datetime
>>> from dateutil.tz import tzlocal
>>> datetime.now(tzlocal()).isoformat()
'2016-10-22T12:45:45.353489-03:00'
Run Code Online (Sandbox Code Playgroud)
或者,如果您想从现有的存储字符串进行转换:
>>> from datetime import datetime
>>> from dateutil.tz import tzlocal
>>> from dateutil.parser import parse
>>> parse("2016-10-21T16:33:27.696173").replace(tzinfo=tzlocal()).isoformat()
'2016-10-21T16:33:27.696173-03:00' <-- Atlantic Daylight Time (ADT)
>>> parse("2016-01-21T16:33:27.696173").replace(tzinfo=tzlocal()).isoformat()
'2016-01-21T16:33:27.696173-04:00' <-- Atlantic Standard Time (AST)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81486 次 |
| 最近记录: |