在python中,我执行以下操作以在时区之间进行转换。它还负责夏时制的调整,所以我不必担心。什么是等效的方式来做这在C++中,不必担心日光节约?在
import datetime
from pytz import timezone
# Create timezones
londontz = timezone("Europe/London")
nyctz = timezone("US/Eastern")
# Set today as 5pm London time
today = datetime.date.today()
time = datetime.time(17, 0, 0)
londondt = londontz.localize(datetime.datetime.combine(today, time))
# Convert the London close time to NYC time (this will auto-adjust for DST)
nycdt = londondt.astimezone(nyctz)
Fwiw,以下是Howard Hinnant's library(MIT开源许可证)将用于此问题的语法:
首先要根据“欧洲/伦敦”找到“
today
”。这是通过获取当前时间,将其转换为伦敦的当前时间,然后将当前本地时间截断为当前本地日期(使用floor<days>()
)。在一旦
today
被建立,添加17h就非常容易了。在然后从}也非常简单。在
londondt
构造{这只是我的输出:
^{pr2}$我注意到原始代码的严格翻译将
today
定义为计算机的本地日期。这也是可能的:也就是说,使用
current_zone()
代替特定时区。但是我最好的猜测是使用current_zone()
来确定日期实际上是示例中的一个逻辑错误。这个库有助于找到这些逻辑错误并轻松地更正它们。在只涉及std::lib的解决方案,可将其下拉到几十年前设计的预多线程C API。您必须将计算机的时区更改为伦敦,在本地和UTC之间进行转换,然后将计算机的时区更改为NY,并在本地和UTC之间进行转换。这不仅容易出错,而且如果根据当前的本地时区有多个线程,也不是线程安全的。此外,在旧的C api中甚至没有真正标准的方法来指定“欧洲/伦敦”和“美国/东方”。你可以用POSIX扩展来实现。在
C++在标准库中不包含这种功能(无论如何,无论如何)。在
尽管如此,如果可能的话,你肯定想把这个留给图书馆。反过来,这个库将把大量的实际工作委托给一个数据库,因为基本上不可能把所有的东西都作为一个实际的算法正确地建模。在
考虑到您的要求,Howard Hinnant's date library显然是首选。在
相关问题 更多 >
编程相关推荐