当前位置: 首页 > 面试题库 >

pytz和astimezone()不能应用于原始日期时间

长孙和悦
2023-03-14
问题内容

我有个约会,需要让它知道时区。

local_tz = timezone('Asia/Tokyo')
start_date = '2012-09-27'
start_date = datetime.strptime(start_date, "%Y-%m-%d")   
start_date = start_date.astimezone(local_tz)


now_utc = datetime.now(timezone('UTC'))
local_now = now_utc.astimezone(local_tz)

我需要确定这是否正确:

print start_date>local_now

但是我得到这个错误。

   start_date = start_date.astimezone(local_tz)
   ValueError: astimezone() cannot be applied to a naive datetime

我将utc转换为东京没有问题。我需要在东京很好地制作start_date时区感知广告。

谢谢


问题答案:

对于pytz时区,请使用其.localize()方法将原始datetime对象转换为带有时区的对象:

start_date = local_tz.localize(start_date)

对于没有DST过渡区,则.replace()方法到一个时区附加到幼稚datetime对象通常也应该工作:

start_date = start_date.replace(tzinfo=local_tz)

有关更多详细信息,请参见pytz文档的本地化时间和日期算法。



 类似资料:
  • 问题内容: 我正在尝试使用比较运算符将当前日期和时间与模型中指定的日期和时间进行比较: 该脚本错误如下: 这些模型如下所示: 我也有使用区域设置日期和时间的django。 我找不到的是django用于DateTimeField()的格式。天真还是知道?以及如何获取datetime.now()来识别语言环境datetime? 问题答案: 默认情况下,该datetime对象naive位于Python中

  • 所以我有: < code >日期开始日期,即< code > EEST 2022年3月27日17时32分01秒 和 ,即 我需要根据这两个值生成一个新日期。我需要将240H周期添加到开始日期。240H意味着我需要添加到开始日期的10天,我最终需要一个新的日期,应该是EEST 2022年4月6日星期三17:32.01。 PS.我是Java的新手,希望我不会问愚蠢的事情。

  • 问题内容: 如果可能的话,在以下情况下,我希望使用joda或非joda解决方案 假设我的一周从2012年5月2日开始,给定的当前日期为02/22/2011。我需要计算给定当前日期的星期开始和结束日期。因此,我的解决方案的星期应该从02/19开始,而星期在02/25结束。为简单起见,我将我的工作日设置为02/05/2011,但是可能是任何一天,我的工作日始终为7天。 我现有的代码如下,但似乎无法按预

  • 问题内容: 有没有一种简单的方法可以从pytz日期时间对象中删除时区? 例如,在此示例中进行重构: 问题答案: 要从日期时间对象中删除时区(tzinfo): 如果您使用的是诸如arrow的库,则可以通过简单地将arrow对象转换为datetime对象,然后执行与上述示例相同的操作来删除时区。 你为什么要这样做?一个例子是mysql不支持DATETIME类型的时区。因此,使用ORM之类的sqlalc

  • 我想在日期时间选择器中选择大于开始日期的结束日期时间。 当前,我正在开始日期时间和结束日期时间。 假设,我选择了时间为12:00 pm的当前日期,现在end date应该是时间为1:00 pm的当前日期。 我想要下面这样的东西 示例 开始日期和时间:---2019-11-06 12:00结束日期和时间:---2019-11-06 1:00 这是我的代码 null null

  • 问题内容: 例如,我有一个这样的字符串日期(我是从Rails应用程序的json服务器中获取的) 我想这样显示 所以我为此使用了moment.js库 但我不知道所需的时区是否为+08:00。如果我跳过通话,结果将是错误的,因为我的浏览器所在的时区不同 即使在我的原始字符串中,我也有结尾。 所以,我的问题是如何使用纯JavaScript或moment.js库从json日期字符串中提取时区? 我能想到的