【问题标题】:C/C++ Getting timestamp with time zone offset infoC/C++ 获取带有时区偏移信息的时间戳
【发布时间】:2014-03-07 17:43:28
【问题描述】:

我需要以以下格式获取时间戳,其中包括与 UTC 的时区偏移:

2014-03-07T10:03:50+02:00

我正在尝试这种方法,但在没有正确格式化时区信息的情况下将其设为 UTC:

time_t now;
time(&now);
char ts[sizeof "1970-01-01T00:00:00+00:00"];
strftime(ts, sizeof ts, "%FT%T%z", gmtime(&now));
printf("Timestamp: %s\n\n", ts);

结果如下:

2014-03-07T09:29:40+0200

【问题讨论】:

  • 你试过localtime而不是gmtime吗?
  • @Myforwik localtime 是当地时间,如果他住在不同的时区怎么办?
  • 是的,我都试过了,我试图在时区偏移小时和分钟之间获取冒号,例如 02:00 而不是 0200
  • 调用 strftime 后不直接插入冒号有什么原因吗?

标签: c++ c


【解决方案1】:

Man 7 strftime根据格式规范格式格式化时间tm。而%z 格式之一默认输出数字时区为hhmm,在小时和分钟之间不带冒号:

%z+hhmm-hhmm 数字时区(即与 UTC 的小时和分钟偏移量)。 (苏)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-07
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 2018-09-11
    • 2020-09-25
    • 2012-11-28
    相关资源
    最近更新 更多