5
A
回答
14
有两个部分对这个问题:
- 获得UTC偏移为
boost::posix_time::time_duration
- 格式的
time_duration
作为指定
显然,得到了当地时区在广泛实施的API中没有很好地展现。我们可以,但是,通过采取相对片刻UTC与同一时刻的差异相对于当前的时区,这样得到它:
boost::posix_time::time_duration get_utc_offset() {
using namespace boost::posix_time;
// boost::date_time::c_local_adjustor uses the C-API to adjust a
// moment given in utc to the same moment in the local time zone.
typedef boost::date_time::c_local_adjustor<ptime> local_adj;
const ptime utc_now = second_clock::universal_time();
const ptime now = local_adj::utc_to_local(utc_now);
return now - utc_now;
}
按照规定格式的偏移量是早晚的事情灌输正确的time_facet
的:
std::string get_utc_offset_string() {
std::stringstream out;
using namespace boost::posix_time;
time_facet* tf = new time_facet();
tf->time_duration_format("%+%H:%M");
out.imbue(std::locale(out.getloc(), tf));
out << get_utc_offset();
return out.str();
}
现在,get_utc_offset_string()
将产生期望的结果。
1
由于C++ 11可以使用计时和std::put_time:
#include <chrono>
#include <iomanip>
#include <iostream>
int main()
{
using sc = std::chrono::system_clock;
auto tm = sc::to_time_t(sc::now());
std::cout << std::put_time(std::localtime(&tm), "formatted time: %Y-%m-%dT%X%z\n");
std::cout << "just the offset: " << std::put_time(std::localtime(&tm), "%z\n");
}
这将产生以下输出:
格式化的时间:2018-02-15T10:25:27 + 0100
只是偏移量:+0100
相关问题
- 1. 当前时间= UTC +/-(UTC +/-当前时间)
- 2. 以UTC格式获得UTC时区+/-
- 3. 如何计算当前UTC时间和其他UTC时间之间的差值?
- 4. 如何获得NSDate和当前时间之间的时间差?
- 5. 如何在几秒钟内获得当前UTC时间戳
- 6. 如何获得给定时区的“午夜”的UTC时间?
- 7. 当前日期从UTC时区
- 8. 获取基于时区和当前服务时间的时差
- 9. Perl获取UTC时间并获得UTC时间戳之间的差异
- 10. 如何禁用R警告:对象(UTC)的时区不同于当前时区()
- 11. 如何获得当前时间和次日设定时间之间的时差?
- 12. 当我在golang中查询mongodb时,如何获得UTC时间
- 13. 获取UTC与给定时区的小时差与Python
- 14. Android获取当前UTC时间
- 15. Web服务获取当前UTC时间?
- 16. MySQL UTC到当地时区
- 17. 如何使用获得当前的时区和GMT
- 18. 如何从NSDate获得当前时区的年月日
- 19. 如何获得时区在Java中的当前日期偏移
- 20. Android如何获得android中两个时区之间的时差?
- 21. 如何获取当地时区的当前日期和时间?
- 22. 如何比较UTC日期和Android中的当前UTC时间?
- 23. 如何从php iso utc中减去当前的utc时间?
- 24. 如何获得mysql时间戳和php当前时间之间的差异?
- 25. MYSQL - 如何获得时差?
- 26. 在动作中获得当前UTC时间
- 27. 如何在Lua脚本中获取当前的utc时间?
- 28. 如何使用Javascript获取JSON格式的当前UTC时间?
- 29. 如何获得当前时间戳
- 30. 如何获得“当前系统时间”?
这是一个复杂的问题;例如,特定的UTC偏移量可以对应于多个时区。 – 2010-10-04 11:16:22
@Roger:所以......我想说正确的方法是我正在寻找当前时间的UTC偏移量,而不是时区? – 2010-10-04 11:29:26
是的,如果这就是你感兴趣的东西(这也是我听起来的样子),这个答案是现货。我更多地回应说:“让本地时区在广泛实施的API中暴露得并不好。”请注意,您今天获得的UTC偏移量可能稍后(或更早)会有所不同。 – 2010-10-04 11:31:37