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

仅使用python标准库将python UTC日期时间转换为本地日期时间?

唐弘和
2023-03-14
问题内容

我有一个使用datetime.utcnow()创建并保存在数据库中的python datetime实例。

为了进行显示,我想使用默认的本地时区(例如,好像使用datetime.now()创建了datetime)将从数据库中检索到的datetime实例转换为本地datetime。

如何仅使用python标准库(例如,没有pytz依赖项)将UTC日期时间转换为本地日期时间?

似乎一种解决方案是使用datetime.astimezone(tz),但是如何获得默认的本地时区?


问题答案:

我想我想通了:计算从纪元以来的秒数,然后使用time.localtime转换为本地timzeone,然后将时间结构转换回datetime …

EPOCH_DATETIME = datetime.datetime(1970,1,1)
SECONDS_PER_DAY = 24*60*60

def utc_to_local_datetime( utc_datetime ):
    delta = utc_datetime - EPOCH_DATETIME
    utc_epoch = SECONDS_PER_DAY * delta.days + delta.seconds
    time_struct = time.localtime( utc_epoch )
    dt_args = time_struct[:6] + (delta.microseconds,)
    return datetime.datetime( *dt_args )

它正确地应用了夏/夏DST:

>>> utc_to_local_datetime( datetime.datetime(2010, 6, 6, 17, 29, 7, 730000) )
datetime.datetime(2010, 6, 6, 19, 29, 7, 730000)
>>> utc_to_local_datetime( datetime.datetime(2010, 12, 6, 17, 29, 7, 730000) )
datetime.datetime(2010, 12, 6, 18, 29, 7, 730000)


 类似资料:
  • 问题内容: 从服务器上,我得到了这种格式的datetime变量:它是UTC时间。我想使用JavaScript将其转换为当前用户的浏览器时间。 如何使用JavaScript或jQuery完成此操作? 问题答案: 在将字符串转换为javascript中的日期之前,将’UTC’附加到字符串中:

  • 问题内容: 我从来没有不得不将时间与UTC转换。最近有人要求我的应用注意时区,并且我一直在圈子里奔波。我发现很多有关将本地时间转换为UTC的信息,这很基本(也许我也做错了),但是我找不到任何有关将UTC时间轻松转换为最终用户时区的信息。 简而言之,android应用程序向我发送了(appengine应用程序)数据,该数据中包含时间戳。要将时间戳存储为UTC时间,我正在使用: 那似乎行得通。当我的应

  • 问题内容: 是否有一个内置的转换方法为在Python,例如获得在指定日期的午夜?相反的转换很容易:有一个方法。 我真的必须手动打电话吗? 问题答案: 您可以使用;现在,您创建一个初始化为午夜的对象。

  • 问题内容: 有谁知道如何将JS dateTime转换为MySQL datetime?还有一种方法可以向JS日期时间添加特定的分钟数,然后将其传递给MySQL日期时间? 问题答案: 尽管JS确实拥有足够的基本工具来执行此操作,但它相当笨拙。

  • 问题内容: Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(“GMT”)); java.util.Date fromDate = cal.getTime(); System.out.println(fromDate); 上面的代码不在格林尼治标准时间打印日期,而是在本地时区打印。我如何从当前日期获得与格林尼治标准时间等效的日期(假设

  • 问题内容: 我正在服务器上工作,并且服务器在GMT本地日期上向我发送日期,如字符串格式,然后将其转换为日期,如下所示: 我需要的是取出Ago中的时间, 因为我使用了一个github项目,该项目在传递日期时返回TimeAgo。 我已经看过这个答案,但没有解决我的问题。 异常:Err java.text.ParseException:无法解析的日期:“星期五6月22日09:29:29 NPT 2018