Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用C+;获取不同时区的当前时间+;_C++_C_Timezone - Fatal编程技术网

C++ 使用C+;获取不同时区的当前时间+;

C++ 使用C+;获取不同时区的当前时间+;,c++,c,timezone,C++,C,Timezone,如何获取不同时区的当前时间?例如,我需要知道新加坡的当前时间,因为我的系统设置为PT时间。您可以转换为GMT,然后转换为您想要的任何时区。尽可能使用UTC(GMT) 如果您需要(例如)打印一份要转到另一个时区的报告,请使用类似的方法对其进行本地化。一种实现方法是使用time以UTC为单位获取当前时间,然后将TZ环境变量操作到目标时区。然后使用localtime\r转换为该时区的本地时间。一个非常老的问题的新答案 给定一个C++11或C++14编译器,并且,当前在新加坡的时间为: #include

如何获取不同时区的当前时间?例如,我需要知道新加坡的当前时间,因为我的系统设置为PT时间。

您可以转换为GMT,然后转换为您想要的任何时区。

尽可能使用UTC(GMT)


如果您需要(例如)打印一份要转到另一个时区的报告,请使用类似的方法对其进行本地化。

一种实现方法是使用
time
以UTC为单位获取当前时间,然后将
TZ
环境变量操作到目标时区。然后使用
localtime\r
转换为该时区的本地时间。

一个非常老的问题的新答案

给定一个C++11或C++14编译器,并且,当前在新加坡的时间为:

#include "tz.h"
#include <iostream>

int
main()
{
    using namespace std::chrono;
    std::cout << date::make_zoned("Asia/Singapore", system_clock::now()) << '\n';
}
这给出了当前使用的本地日期、时间和缩写。它基于
库和

std::chrono::system_clock::now()
返回UTC时区中的时间戳。该程序定位“亚洲/新加坡”的时区信息,并将UTC时间戳转换为一对,表示该位置的本地时间和当前时区

上述程序独立于计算机的当前时区

C++20更新 在C++20中,您现在可以这样做(一旦供应商发货):


格林尼治标准时间是一条出路。(我是在美国的某个人那里说的,所以这不是我所在时区的问题。)如何处理省日时间(PDT/PST)?如果你想得到更具体的答案,你必须提供更多的上下文。你的操作系统是什么?站台?图书馆设备?
2015-08-19 05:25:05.453824 SGT
#include <chrono>
#include <iostream>

int
main()
{
    using namespace std::chrono;
    std::cout << zoned_time{"Asia/Singapore", system_clock::now()} << '\n';
}
2015-08-19 05:25:05.453824 SGT