Tag: 偏移

C代码获取相对于UTC的本地时间偏移(以分钟为单位)?

我没有找到一种简单的方法来获得当地时间和UTC时间之间的分钟数。 起初我打算使用tzset()但它不提供夏令时。 根据手册页,如果日光节省有效,它只是一个不等于零的整数。 虽然通常是一小时,但在某些国家可能需要半小时。 我宁愿避免计算gmtime()返回的当前UTC与localtime()之间的时差。 更通用的解决方案将为我提供指定位置和正time_t值的信息,或至少在本地。 编辑1 :用例是为https://github.com/chmike/timez获取正确的本地时间偏移量。 顺便说一句,如果您认为libc函数操作时间还可以,请阅读https://rachelbythebay.com/w/2013/03/17/time/ 。 编辑2 :迄今为止我用来计算UTC时间偏移的最佳和最简单的解决方案是 // Bogus: assumes DST is always one hour tzset(); int offset = (int)(-timezone / 60 + (daylight ? 60 : 0)); 问题是确定实际的节省时间。 编辑3 :受到@trenki答案的启发 ,我提出了以下解决方案。 这是一个黑客,它欺骗mktime()将gmtime()的输出视为gmtime() 。 当DST更改在UTC时间和本地时间之间的时间跨度时,结果是不准确的。 #include #include int main() { time_t rawtime = time(NULL); struct tm *ptm = gmtime(&rawtime); // […]