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

python-日期时间与时区到时代

钮誉
2023-03-14
问题内容

在下面的代码中,我正在计算现在纪元和当天纪元的开始。

import time
import pytz
from datetime import datetime

tz1 = pytz.timezone('CST6CDT')
utc = pytz.timezone('UTC')
now = pytz.UTC.localize(datetime.utcnow())
now_tz = now.astimezone(tz1)
print now_tz
print now_tz.strftime('%s')

begin_day = now_tz.replace(hour=0, minute=0, second=0)
print begin_day

print begin_day.strftime('%s')

打印报表:

2012-08-28 13:52:21.595718-05:00
1346187141
2012-08-28 00:00:00.595718-05:00
1346137200

使用CDT时区将纪元转换为时间戳:1346187141-2012年8月28日15:52:21,1346137200-2012年8月28日02:00:00

我希望第二个纪元是一天的开始,但是现在是凌晨2点。转换为新纪元时,似乎仍在使用本地时区PST。

我究竟做错了什么 ?还是可以用其他方式做到这一点?

谢谢!


问题答案:

注意:我的回答是绝对错误的。 (我想删除它,但是在删除accept标志之前无法删除它。)

下面的代码演示了now_tz我们的两种方法为其产生不同结果的值。

import calendar
import pytz
import datetime as dt

tz1 = pytz.timezone('US/Eastern')
utc = pytz.timezone('UTC')
now = utc.localize(dt.datetime(2002, 10, 28), is_dst=None)
now_tz = now.astimezone(tz1)
now_epoch = calendar.timegm(now_tz.utctimetuple())
begin_day = tz1.normalize(now_tz.replace(hour=0, minute=0, second=0))

midnight = tz1.localize(dt.datetime.combine(now_tz, dt.time(0, 0)), is_dst=None)
if begin_day != midnight:
    print(begin_day)
    # 2002-10-27 01:00:00-04:00  # my result -- is not midnight
    print(midnight)
    # 2002-10-27 00:00:00-04:00  # J.F.Sebastian's result is correct

(原始答案已编辑)



 类似资料:
  • 问题内容: 我有一个脚本,需要在脚本的不同行执行以下命令: 在我的陈述中,我有以下内容: 我收到以下错误: 如果我将语句的顺序更改为: 我收到以下错误: 如果我再次将语句更改为: 我收到以下错误: 这是怎么回事,我怎么都可以工作? 问题答案: 您的麻烦是,您有一些代码希望对 模块 进行引用,而其他代码希望对类进行引用 。 显然,不能两者兼有。 当您这样做时: 您首先要设置为对该类的引用,然后立即将

  • 日期与时间 避免使用 DateTime,除非你确实需要处理历法改革(儒略/格里历的改革),此时通过设置 start 参数来明确你的意图。 # 差 - 使用 DateTime 表示当前时间 DateTime.now # 好 - 使用 Time 表示当前时间 Time.now # 差 - 使用 DateTime 表示近现代日期 DateTime.iso8601('2016-06-29') # 好 -

  • 日期与时间 手动设定 可手动设定年/月/日/时/分/秒(12小时制的AM / PM)。 透过因特网设定 经由因特网自动取得日期、时间。 网络联机的详细说明,请参阅(网络设定) > [Infrastructure模式]。 提示 将(设定)>(主题设定) > [颜色]设定为[每月]时,将会于变更[日期与时间]的月份后,自动改变背景颜色。

  • 我有一个本地日期时间的字符串表示和一个Java时区。 我正在尝试以 MM/dd/yyyy HH:mm:ssZ 格式获取输出,但我无法弄清楚如何使用正确的日期时间和时区创建日历或 JodaTime 对象。如何将时区转换为可以通过简单日期格式“Z”或“z”解析的值? 和 返回 这是 。 是创建日历或Joda日期时间并通过解析字符串“08/14/2014 15:00:00”来设置各个年/月/日/小时/分

  • 问题内容: 将记录插入数据库时​​,我无法将C#日期时间 7/31/2017 3:13:49 PM转换 为SQL日期时间。 我正在使用 但这给了我错误。 无法将字符串识别为有效的DateTime。 问题答案: .Net 直接映射到SQL Server 。这意味着您完全不需要担心显示格式,因为它没有显示格式。 您需要做的就是将struct的实例 作为参数 传递给:

  • 问题内容: 我接收到来自Twitter的特定日期以特定格式发送的Twitter消息: 我想将这些日期存储在带有djangos DateTimeField字段的postgresql中的“带有时区的时间戳”字段中。但是,当我存储该字符串时,出现此错误: 我可以自动将twitter datetype转换为python datetime时间(在我的应用程序中的其他地方可以保存日期)。 问题答案: 编写这样