到类似:历史时间GMT UTC与DST
Convert historical time to GMT
这一次我的情况是: 我需要一些字符串时间转换格式为“2011061411322100”为GMT。问题是时代来自另一台个人电脑,并且是一个历史时期。所以我没有实时获得时间,所以我不能简单地从我的代码运行的盒子上的当地时间获取GMT。
时间代表开始和结束时间。如果我的代码在时间更改期间运行,则时间更改将适用于我获得时间的远程框。所以如果在开始和结束时间之间发生变化,那么结束时间将被抵消。
我想我必须先转换成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吗?我如何知道要设置什么?
看着你的另一个问题我有点困惑:是2011061411322100 GMT/UTC或当地时间?另一台个人电脑总是和主机一样处于同一时区吗?您希望输出的格式是什么? - 具有GMT/UTC值的结构tm? –
tz数据库http://en.wikipedia.org/wiki/Tz_database有关于历史时区的信息;但只有当你知道时区并且你知道另一台PC正在遵守规则时才有用。 –
可以在C++系统中使用吗? –