gpt4 book ai didi

c++ - 如何在 C++ 中获得 GMT 时间和任何时区之间的差异

转载 作者:行者123 更新时间:2023-11-28 03:34:22 26 4
gpt4 key购买 nike

我想要 C++ 中的灵魂来获得 GMT 时间和任何时区之间的小时差异。例如这是用 Java 我想用 C++ 制作

// New York
Calendar c = new GregorianCalendar(TimeZone.getTimeZone("America/New_York"));

// Alaska
c = new GregorianCalendar(TimeZone.getTimeZone("America/Anchorage"));
// Difference between New York and Alaska

请告诉我如何在 C++ 中获取这个时区

最佳答案

您可以使用 cctz用于计算两个不同时区在某个特定时间的 UTC 偏移量差异的库。

#include <chrono>
#include "cctz.h"
using namespace std::chrono;

cctz::TimeZone nyc;
cctz::LoadTimeZone("America/New_York", &nyc);

cctz::TimeZone anc;
cctz::LoadTimeZone("America/Anchorage", &anc);

const auto now = system_clock::now();
const auto nyc_off = cctz::BreakTime(now, nyc).offset;
const auto anc_off = cctz::BreakTime(now, anc).offset;

const auto off_diff = nyc_off - anc_off;

现在,事实是您真的不想那样做。真的。健康的现代代码永远不应该(我说过永远不会,因为我的意思是从不)关心 UTC 偏移量。使用 UTC 偏移量进行计算是时区库的工作,如果您的时区库不为您处理,那么您使用了错误的时区库。如果您认为自己关心 UTC 偏移量,那么我鼓励您查看以下内容:

  • 阅读 CCTZ 在其 github 页面上的基本概念部分
  • 观看 Time Programming Fundamentals来自 CppCon 2015
  • 阅读 cctz.h 头文件(简短)

[免责声明:我是 cctz 的作者。]

关于c++ - 如何在 C++ 中获得 GMT 时间和任何时区之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11521674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com