Tag: dst

time.h中的tzset和daylight全局变量解释

在daylight全局变量的time.h标题中,它说:“如果夏令时规则适用,则此变量具有非零值。非零值并不一定意味着夏令时现在有效;它仅表示夏令时时间有时是有效的。“ 现在我注意到,在Solaris 11.2和Linux中,“daylight”变量被设置为1,即使我的时区根本不使用夏令时(澳大利亚/布里斯class)。 示例代码确认了这一点,如果我运行tzset并输出我们得到的全局变量:daylight = 1 tz [0] = [AEST] tz [1] = [AEDT] timezone = [-36000] 但根据我的理解,日光应该设置为0,因为我的区域在一年中的任何时候都没有夏令时。 我还注意到,当设置为当前时间时,struct tm返回tm_isdst = 0,这是正确的。 那么为什么daylight变量设置为1? 它不应该设置为0吗? 还是我误解了这个? 代码是: #include #include void main() { time_t t; struct tm *tms = { 0 }; tzset(); time(&t); tms = localtime(&t); printf(“date and time : %s”,ctime(&t)); printf(“daylight = %d tz[0] = […]

获取C中时区的夏令时转换日期

在C中,是否有一种简单的跨平台方法来检索给定时区开始和结束夏令时的日期? 我已经有时区偏移信息以及当前是否正在观察夏令时,但我确实需要夏令时开始和结束的日期(对于我无法控制的外部依赖)。 在Windows中,我使用GetTimeZoneInformation来获取TimeZoneInfo ,但是我找不到类似的Linux / Solaris / Macfunction。 我还应该指出,我不能仅仅依靠美国的夏令时采用规则,因为我无法预测它将被用于的国家。 我知道获取此信息的唯一方法是通过zdump或者直接查看/ usr / share / lib / zoneinfo文件本身,但我希望有更好的解决方案。 感谢您的任何帮助,您可以提供。

在C / C ++中在本地时间和GMT / UTC之间转换

在C / C ++中,在本地时间和UTC之间转换日期时间的最佳方法是什么? “datetime”是指包含日期和时间的一些时间表示。 我会对time_t , struct tm或任何其他使其成为可能的表示感到满意。 我的平台是Linux。 这是我正在尝试解决的具体问题:我得到一对包含julian日期和一天中的秒数的值。 这些值是格林威治标准时间。 我需要将其转换为本地时区“YYYYMMDDHHMMSS”值。 我知道如何将朱利安日期转换为YMD,显然很容易将秒转换为HHMMSS。 然而,棘手的部分是时区转换。 我相信我可以找到解决方案,但我更愿意找到一种“标准”或“众所周知”的方式而不是磕磕绊绊。 可能相关的问题是在C中获取时区的夏令时转换日期