我有一个包含本地日期/时间的字符串,需要将其转换为time_t值(在UTC中)- 我一直在尝试这样做:
char* date = "2009/09/01/00";
struct tm cal = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL};
strptime(date, "%Y/%m/%d/%H", &cal);
time_t t = mktime(&cal);
但是我得到的time_t值是我期望的UTC格式,而不是本地时间。也许我误解了strptime的作用,但是在我的时区(英国),在9月1日我们使用BST(即UTC + 1小时),所以我期望得到的值比UTC快1小时。
有没有一种方法可以将字符串解释为本地时间,并自动考虑当天生效的UTC偏移量?请注意,我需要time_t值而不是struct tm类型,在上面的示例中,我希望time_t值对应于2009-09-01 01:00:00 GMT。
mktime()
确实需要一个本地时间结构体。我例子中的1小时差异是夏令时造成的,cal
中被设置为0,但目前是1。我会编辑这个例子。 - Andomartimegm
作为mktime
的UTC等效函数。 - lanoxx