gpt4 book ai didi

c - 24小时时间格式

转载 作者:太空宇宙 更新时间:2023-11-04 08:42:55 25 4
gpt4 key购买 nike

我正在用 C 程序读取 json。我收到这样的字符串:

Apr 3, 2014 4:44:39 PM

我正在用 strptime 解析它以获取如下所有值:

strptime(observationDate, "%b %d, %Y %H:%M:%S %p", &result);

我也尝试过使用 %r 而不是 %p。在 observationDate 中,我有包含字符串格式日期的字符串。结果是一个结构体。

但是,即使在第一个字符串中得到 PM,当我尝试在转换后打印日期时,我得到的是 4 而不是 16。我这样打印,debugLog 是一个在文本之前打印系统日期的函数...

debugLog(DEB_INFO, "observationDateConverted: %d-%d-%d %d:%d:%d\n", 
result.tm_year+1900,
result.tm_mon + 1,
result.tm_mday,
result.tm_hour,
result.tm_min,
result.tm_sec);

最佳答案

要么使用%r 要么 %I:%M:%S %p(注意是I不是 H)。

来自 man strptime (我强调):

%r
The 12-hour clock time (using the locale's AM or PM). In the POSIX locale equivalent to %I:%M:%S %p.

这里吸取的教训:RTFM!

测试程序:

#define _XOPEN_SOURCE

#include <time.h>

const char d[] = "Apr 3, 2014 4:44:39 PM";

int main(void)
{
struct tm t = { 0 };

strptime(d, "%b %d, %Y %I:%M:%S %p", &t);
}

检查结果:

$gdb ./main
[...]
b 12
r
Breakpoint 1, main () at main.c:12
12 }
(gdb) p t
$2 = {tm_sec = 39, tm_min = 44, tm_hour = 16, tm_mday = 3, tm_mon = 3, tm_year = 114, tm_wday = 4, tm_yday = 92, tm_isdst = 0, __tm_gmtoff = 0, __tm_zone = 0x0}
(gdb)

关于c - 24小时时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22841418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com