是否有一个python日期时间库来执行此操作?
dt = iso8601.parse_date("2016-03-13 00:00:00-08")
dt = dt.astimezone(us_pacific)
dt += timedelta(days=1)
self.assertEqual(dt, iso8601.parse_date("2016-03-14 00:00:00-07"))
换句话说,我正在寻找一个库,其中datetime对象足够聪明,可以知道timedelta(days=1)与timedelta(hours=24)不同(支持月份的加分)。
目前,我发现最不容易出错的解决方法是使用日期,然后将其转换为给定时区中时间设置为0的日期时间。不过,问题是很容易假设上面的代码将按给定的方式工作,所以我希望在没有风险的库中工作。同样,如果给您一个datetime对象,那么将其转换回日期是一件麻烦的事。
编辑:
这被搁置了,因为询问是否有一个软件库可以完成一个任务,而不必从头编写代码。我不知道如何更好地表达,因为我已经解释过解决方法是使用日期,然后在以后添加时间,这可以通过各种方式完成。我正在寻找更好的方法,我已经知道这不是python标准库的一部分。我肯定会问“有更好的方法吗?”,或“如何在大约相同的代码行数内完成此任务?”也是完全正确的问题。
如果没有图书馆做这种事,我肯定能办到。我称之为YADateTime,因为它将是另一个python日期时间库。也就是说,如果已经有一个图书馆,我就没有必要去建一个。
最佳答案
这在Python 3.6.4上对我很有用。根据时区感知的datetime对象正确地添加了日期(即日期递增,小时保持在0)。我遇到的问题是时区偏移量不正确。
不是很漂亮,但似乎很管用。
EST = pytz.timezone('US/Eastern')
DAY = dt.timedelta(days = 1)
date = date + DAY
date_with_correct_timezone = EST.localize(dt.datetime(date.year,date.month,date.day,hour,minute,0))
if date != date_with_correct_timezone:
print(f' corrected {date} to {date_with_correct_timezone}')
date = date_with_correct_timezone
示例输出:
corrected 2017-03-13 00:00:00-05:00 to 2017-03-13 00:00:00-04:00
corrected 2017-11-06 00:00:00-04:00 to 2017-11-06 00:00:00-05:00