如何获取不同时区的当前时间?例如,我需要知道新加坡的当前时间,因为我的系统设置为太平洋时间。
最佳答案
一个非常老的问题的新答案。
给定一个 C++11 或 C++14 编译器,并且 this timezone library ,新加坡本地时间是:
#include "tz.h"
#include <iostream>
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
这给出了当前使用的本地日期、时间和缩写。它基于 <chrono>
图书馆和 IANA timezone database .
std::chrono::system_clock::now()
返回 UTC 时区的时间戳。该程序定位“亚洲/新加坡”的时区信息,并将 UTC 时间戳转换为代表本地时间和该位置当前时区的一对。
上述程序与计算机的当前时区无关。
C++20 更新
在 C++20 中,您现在可以执行此操作(一旦您的供应商发布了它):
#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
关于c++ - 使用 C++ 获取不同时区的当前时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3347831/