我有两个想要比较的变量。打印出来后,它们是这样的:
2020-05-20 13:01:30
2020-05-20 14:49:03
Run Code Online (Sandbox Code Playgroud)
但是,一种是字符串类型,另一种是日期时间类型。如果我想将字符串一转换为日期类型以便我可以比较它们,这是唯一使用的方法吗strptime?因为这对我来说似乎有点多余,因为该字符串已经具有我想要的确切格式。基本上,是否有一个功能与 相同strptime,但不重新格式化它?正如您可以想象的那样,谷歌搜索这个问题是不可能的,因为我得到的只是人们试图将任何类型的字符串格式化为日期时间,所以所有答案都只是指向strptime.
我有以下字符串:
mytime = "2009-03-08T00:27:31.807Z"
Run Code Online (Sandbox Code Playgroud)
如何在python中将其转换为epoch?
我试过了:
import time
p = '%Y-%m-%dT%H:%M:%S'
int(time.mktime(time.strptime(s, p)))
Run Code Online (Sandbox Code Playgroud)
但它不适用于31.807Z.
我想知道是否有一种方法或内置库可用于找到两个字符串输入的时间差异.
我的意思是,如果我有2个输入字符串:
如何计算时间差并将其打印为输出.
我知道这听起来有点傻,但对此有任何帮助表示赞赏.
可能重复:
如何在python中解析ISO格式的日期?
我有一个isoformat datetime作为字符串,如下例所示 -
'2011-05-31T04:35:33.127-05:00'
Run Code Online (Sandbox Code Playgroud)
将它转换为python datetime对象的最佳方法是什么?我遇到了一些帖子,告诉我们如何获得一个isoformat字符串,但不是相反.
谢谢!!
根据严的评论编辑 -
>>>import dateutil.parser
>>> d1='2011-05-31T04:35:33.127-05:00'
>>> d2=dateutil.parser.parse(d1)
>>> d2
datetime.datetime(2011, 5, 31, 4, 35, 33, 127000, tzinfo=tzoffset(None, -18000))
Run Code Online (Sandbox Code Playgroud)
我需要获取原始字符串表示的本地时间的datetime对象.由于我不知道输入日期在哪个时区,我不能使用astimezon方法.最好的方法是什么?谢谢!!
我有这个字符串'2015-04-08T07:52:00Z',我想把它转换成'08/04/2015',我怎么能这样做?
我有一个从 API 获得的日期。它的形式为2015-01-01T15:04:23Z。
如何使用 Flask-SQLAlchemy 将此日期接受到模型中?
到目前为止,我已经尝试过,
date = db.Column(db.DateTime)
Run Code Online (Sandbox Code Playgroud)
和
date = db.Column(db.DateTime(timezone=True))
Run Code Online (Sandbox Code Playgroud)
这给了我错误
StatementError: (exceptions.TypeError) SQLite DateTime type only accepts Python datetime and date objects as input.
Run Code Online (Sandbox Code Playgroud)
此外,当我使用 a 检索它时get,我需要它采用完全相同的格式。
在dateutilPython模块解析得很好,但是当我从表中检索它,我需要得到2015-01-01T15:04:23Z。
>>> from dateutil.parser import parse
>>> parse('2015-01-01T15:04:23Z')
datetime.datetime(2015, 1, 1, 15, 4, 23, tzinfo=tzutc())
Run Code Online (Sandbox Code Playgroud) 由于我的应用程序的情况,我更愿意使用datetime.strptime而不是dateutil.parser.
查看文档后,我认为这%Y-%m-%dT%H:%M:%S%z可能是解析这样的日期字符串的正确格式。但它仍然给我一个错误。
from datetime import datetime
d = '0000-00-00T00:00:00+00:00'
datetime.strptime(d, '%Y-%m-%dT%H:%M:%S%z')
Run Code Online (Sandbox Code Playgroud)
ValueError: time data '0000-00-00T00:00:00+00:00' does not
match format '%Y-%m-%dT%H:%M:%S%z'
Run Code Online (Sandbox Code Playgroud) I need to convert
FROM
a list of strs
TO
a list of
datetime.datetimedatetime.datetime plus a datetime.timedelta.The input list contains strings in ISO_8601 (wikipedia) format. The strings can either be a date or a time interval. The solution for this, that I came up with is the following:
import dateutil.parser
result = []
for str_ in input_list:
if not is_time_interval_str(str_):
result.append(dateutil.parser.parse(str_))
else:
result.append(parse_time_interval(str_))
Run Code Online (Sandbox Code Playgroud)
What I am stuck with is the two functions …
我正在尝试在API中序列化datetime,但我不想要毫秒.我想要的是:https://en.wikipedia.org/wiki/ISO_8601 -"2015-09-14T17:51:31+00:00"
tz = pytz.timezone('Asia/Taipei')
dt = datetime.datetime.now()
loc_dt = tz.localize(dt)
Run Code Online (Sandbox Code Playgroud)
试试A:
loc_dt.isoformat()
>> '2015-09-17T10:46:15.767000+08:00'
Run Code Online (Sandbox Code Playgroud)
试试B:
loc_dt.strftime("%Y-%m-%dT%H:%M:%S%z")
>> '2015-09-17T10:46:15+0800'
Run Code Online (Sandbox Code Playgroud)
后者几乎是完美的,除了在时区部分缺少冒号.如何在没有字符串操作的情况下解决此问题(删除毫秒或添加冒号)?
我有以下日期时间字符串s:
2017-10-18T04:46:53.553472514Z
我是这样解析的:
t = datetime.strptime(s, '%Y-%m-%dT%H:%M:%SZ')
Run Code Online (Sandbox Code Playgroud)
如何修复 ValueError:时间数据'2017-10-18T04:46:53.553472514Z'与格式不匹配'%Y-%m-%dT%H:%M:%SZ'