mktime 导致 SLES 15 SP3 溢出
mktime causes overflow in SLES 15 SP3
SLES 15 SP3 使用 glibc 2.31,我们使用 mktime 的转换时间代码因 ulong 溢出而失败。如果我们在这里遗漏了什么,谁能告诉我们。或者我们有任何其他替代系统调用可以做同样的事情吗?
main()
{
time_t time_since_epoch = 0;
struct tm gmTimetm;
gmTimetm.tm_year = 2022;
gmTimetm.tm_mon = 02;
gmTimetm.tm_mday = 24;
gmTimetm.tm_hour = 11;
gmTimetm.tm_min = 42;
gmTimetm.tm_sec = 45;
time_since_epoch = mktime(&gmTimetm);
printf("%lu \n", time_since_epoch);
return 0;
}
OP:
18446744073709551615
mktime() 失败。它正在返回 -1。
tm_isdst需要设置为-1。这样问题就解决了
SLES 15 SP3 使用 glibc 2.31,我们使用 mktime 的转换时间代码因 ulong 溢出而失败。如果我们在这里遗漏了什么,谁能告诉我们。或者我们有任何其他替代系统调用可以做同样的事情吗?
main()
{
time_t time_since_epoch = 0;
struct tm gmTimetm;
gmTimetm.tm_year = 2022;
gmTimetm.tm_mon = 02;
gmTimetm.tm_mday = 24;
gmTimetm.tm_hour = 11;
gmTimetm.tm_min = 42;
gmTimetm.tm_sec = 45;
time_since_epoch = mktime(&gmTimetm);
printf("%lu \n", time_since_epoch);
return 0;
}
OP: 18446744073709551615
mktime() 失败。它正在返回 -1。
tm_isdst需要设置为-1。这样问题就解决了