关于ISO 8601到C中的time_t转换,反之亦然,我们可以使用C语言中的库函数来实现。
ISO 8601是一种日期和时间的表示方式,它的格式为YYYY-MM-DDTHH:MM:SSZ,其中T表示日期和时间的分隔符,Z表示UTC时间。而C语言中的time_t类型表示的是自1970年1月1日00:00:00 UTC起经过的秒数。
下面是一个简单的示例代码,演示如何将ISO 8601格式的字符串转换为C语言中的time_t类型,以及如何将time_t类型转换为ISO 8601格式的字符串:
#include<stdio.h>
#include <time.h>
int main() {
// 将ISO 8601格式的字符串转换为time_t类型
const char *iso8601 = "2022-01-01T00:00:00Z";
struct tm tm;
sscanf(iso8601, "%d-%d-%dT%d:%d:%dZ",
&tm.tm_year, &tm.tm_mon, &tm.tm_mday,
&tm.tm_hour, &tm.tm_min, &tm.tm_sec);
tm.tm_year -= 1900;
tm.tm_mon -= 1;
time_t t = mktime(&tm);
printf("ISO 8601 to time_t: %ld\n", t);
// 将time_t类型转换为ISO 8601格式的字符串
t = 1646246400; // 2022-03-01T00:00:00Z
gmtime_r(&t, &tm);
char iso8601_buf[20];
strftime(iso8601_buf, sizeof(iso8601_buf), "%Y-%m-%dT%H:%M:%SZ", &tm);
printf("time_t to ISO 8601: %s\n", iso8601_buf);
return 0;
}
在这个示例代码中,我们使用了C语言中的tm
结构体来表示日期和时间,使用sscanf
函数将ISO 8601格式的字符串解析为tm
结构体的各个字段,然后使用mktime
函数将tm
结构体转换为time_t
类型。
同样地,我们也使用了gmtime_r
函数将time_t
类型转换为tm
结构体,然后使用strftime
函数将tm
结构体格式化为ISO 8601格式的字符串。
需要注意的是,这个示例代码中的时间转换都是基于UTC时间的,如果需要转换为本地时间,可以使用localtime_r
函数代替gmtime_r
函数。
领取专属 10元无门槛券
手把手带您无忧上云