使用C ++获取不同时区的当前时间
我如何获得不同时区的当前时间? 例如,我需要知道新加坡的当前时间,因为我的系统设置为PT时间。
一种实现方式是使用time
以UTC TZ
获取当前时间,然后将TZ
环境变量操作到目标时区。 然后使用localtime_r
转换为该时区的本地时间。
一个非常古老的问题的新答案。
给出C ++ 11或C ++ 14编译器和此时区库 ,新加坡当前时间是:
#include "tz.h" #include int main() { using namespace std::chrono; std::cout << date::make_zoned("Asia/Singapore", system_clock::now()) << '\n'; }
只为我输出:
2015-08-19 05:25:05.453824 SGT
这给出了当前使用的本地日期,时间和缩写。 它基于
库和IANA时区数据库 。
std::chrono::system_clock::now()
返回UTC时区的时间戳。 该程序查找“亚洲/新加坡”的时区信息,并将UTC时间戳转换为表示该位置的当地时间和当前时区的对。
上述程序独立于计算机的当前时区。
尽可能使用UTC(GMT)。
如果您需要(例如)打印要转到另一个时区的报表,请使用类似SystemTimeToTzSpecificLocalTime()的内容对其进行本地化。
您可以转换为GMT,然后转换为您想要的任何时区。