如同:
这次我的场景是:我需要将一些格式为“2011061411322100”的字符串时间转换为GMT。问题是时代来自另一台PC,是一个历史时期。所以我没有实时获得时间,所以我不能简单地从我的代码正在运行的盒子上的当地时间获取格林威治标准时间。
时间代表开始和结束时间。如果我的代码在时间更改期间运行,则时间更改将应用于我获取时间的远程框。因此,如果更改发生在开始时间和结束时间之间,那么结束时间将被抵消。
我假设我必须首先转换为 tm:
// add to tm struct
tm tmTime;
tmTime.tm_hour = hour;
tmTime.tm_min = min;
tmTime.tm_sec = sec;
tmTime.tm_mday = day;
tmTime.tm_mon = (month-1);
tmTime.tm_year = (year - 1900);
然后转换为 time_t
time_t tmInTime_t = mktime( &tmTime );
然后使用 gmtime:
struct tm *gmt = gmtime( &tmInTime_t );
如果在开始和结束之间发生时间变化,这仍然会导致较大的增量。我该如何解决?我需要设置 .tm_isdst 吗?我怎么知道要设置什么?