我正在尝试使用strptime
方法将格式为“ 2012-07-24T23:14:29-07:00”
的时间戳转换为python中的datetime
对象。问题出在最后的时间偏移量(-07:00)
。没有偏移量,我就可以成功地做到
time_str = "2012-07-24T23:14:29"
time_obj=datetime.datetime.strptime(time_str,'%Y-%m-%dT%H:%M:%S')
但是我尝试了偏移
time_str = "2012-07-24T23:14:29-07:00"
time_obj=datetime.datetime.strptime(time_str,'%Y-%m-%dT%H:%M:%S-%z').
但是它给出了一个Value错误,说“ z”
是一个错误的指令。
有什么解决办法吗?
Python 2 strptime()
函数确实不支持%z时区格式(因为基础time.strptime()
函数不支持时区)。您有两种选择:
使用进行解析时,忽略时区strptime
:
time_obj = datetime.datetime.strptime(time_str[:19], '%Y-%m-%dT%H:%M:%S')
使用dateutil模块,它的解析功能确实处理时区:
from dateutil.parser import parse
time_obj = parse(time_str)
在命令提示符下快速演示:
>>> from dateutil.parser import parse
>>> parse("2012-07-24T23:14:29-07:00")
datetime.datetime(2012, 7, 24, 23, 14, 29, tzinfo=tzoffset(None, -25200))
您还可以升级到Python 3.2或更高版本,如果%z
您:从输入中删除了最后一个,并且在-之前删除了from ,则时区支持已被改进到可以使用的程度%z:
>>> import datetime
>>> time_str = "2012-07-24T23:14:29-07:00"
>>> datetime.datetime.strptime(time_str, '%Y-%m-%dT%H:%M:%S%z')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python3.4/_strptime.py", line 500, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python3.4/_strptime.py", line 337, in _strptime
(data_string, format))
ValueError: time data '2012-07-24T23:14:29-07:00' does not match format '%Y-%m-%dT%H:%M:%S%z'
>>> ''.join(time_str.rsplit(':', 1))
'2012-07-24T23:14:29-0700'
>>> datetime.datetime.strptime(''.join(time_str.rsplit(':', 1)), '%Y-%m-%dT%H:%M:%S%z')
datetime.datetime(2012, 7, 24, 23, 14, 29, tzinfo=datetime.timezone(datetime.timedelta(-1, 61200)))
我需要将查询中的日期值转换为带有时区的时间戳,但目前我得到的时区区域(“欧洲/巴黎”)是EF使用的无效区域。 例如,在执行此操作时:
问题内容: 我需要在查询中将DATE值转换为带时区的TIMESTAMP,但目前我正在获取不能被EF使用的时区(欧洲/巴黎)。 例如,执行此操作时: 我目前得到此输出: 但我需要像这样: 任何想法如何做到这一点? 问题答案: 您可以将转换为,然后使用将此时间戳转换为具有时区的时间戳:
我有一个格式为“2019-04-25T16:34:28-05:00”的字符串。我已经通过模式“yyyy-mm-dd't'hh:mm:ssz”通过joda-time解析了字符串。 它在DateTime中给出的输出是“2019-04-25t15:34:28.000-06:00”。
这是我在申请表中得到的日期: 将psqlDate转换为joda的最佳方式是什么? [编辑] 我可以使用解析方法。它可以很好地使用时间戳,它可以使用T-分割日期和时间的信息。 这应该与良好的模式一起工作: 带有时区的PostgreSQL时间戳的正确模式是什么?
我有一个UTC的时间戳。我将其转换为本地时间。我的时区是CET/CEST。 由于我的时区,系统会自动应用正确的偏移量:如果我在夏天转换时间戳,它会自动添加2小时(无论何时转换),如果在冬天,它会添加1小时。 到目前为止-很好。 现在,我想基于另一个引用的时间戳转换UTC时间戳。如果引用在夏季,则应始终添加2小时-无论转换的时间戳是夏季还是冬季-如果引用在冬季,则应始终添加1小时。 那么,如果我的系
我需要能够将从存储在“日期时间”字段中的MySQL数据库中获取的数据转换为Java对象。 我遇到的问题是将本地时间偏移量添加到对象,我不需要它,因为日期时间已经以UTC格式存储在数据库中。所以当我运行以下代码时: 我得到: 我需要时间部分保持不变。 我找不到任何明显的解决问题的方法,所以我在这里错过了什么吗?