gpt4 book ai didi

C++ 日期时间解析

转载 作者:太空狗 更新时间:2023-10-29 21:25:28 24 4
gpt4 key购买 nike

我使用 strptime 将日期时间字符串解析为 tm 结构。但是我遇到了一个问题:

我有这种格式的日期:

Thu Dec 13 23:44:45 MSK 2012

我用 "%a %b %d %T" 格式字符串解析 Thu Dec 13 23:44:45。但我不明白如何解析年份。我不能只使用 "%a %b %d %T MSK %Y" 因为我想要独立于语言环境的解析器。

我可以跳过 MSK 单词吗?或者有什么其他方法可以解决这个问题?

最佳答案

我没有找到答案,所以我编写了自己的日期时间解析器:

time_t timeParse(const char *string, struct tm *datetime)
{
char dn[4], mn[4], ln[4];
int d, h, m, s, y;
sscanf(string, "%s %s %d %d:%d:%d %s %d", dn, mn, &d, &h, &m, &s, ln, &y);
datetime->tm_sec = s;
datetime->tm_min = m;
datetime->tm_hour = h;
datetime->tm_mday = d;
if (!strcmp(mn, "Jan")) datetime->tm_mon = 0;
if (!strcmp(mn, "Feb")) datetime->tm_mon = 1;
if (!strcmp(mn, "Mar")) datetime->tm_mon = 2;
if (!strcmp(mn, "Apr")) datetime->tm_mon = 3;
if (!strcmp(mn, "May")) datetime->tm_mon = 4;
if (!strcmp(mn, "Jun")) datetime->tm_mon = 5;
if (!strcmp(mn, "Jul")) datetime->tm_mon = 6;
if (!strcmp(mn, "Aug")) datetime->tm_mon = 7;
if (!strcmp(mn, "Sep")) datetime->tm_mon = 8;
if (!strcmp(mn, "Oct")) datetime->tm_mon = 9;
if (!strcmp(mn, "Nov")) datetime->tm_mon = 10;
if (!strcmp(mn, "Dec")) datetime->tm_mon = 11;
datetime->tm_year = y - 1900;
return mktime(datetime);
}

我手动填写必要的 tm 结构 字段,mktime 填写剩余字段:tm_wdaytm_ydaytm_isdst.

你应该这样调用它:

time_t t = timeParse("Thu Dec 13 23:44:45 MSK 2012", &datetime);

关于C++ 日期时间解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13910014/

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