因为公司产品出口,有些国家实行夏令时,安排我做测试
欧盟2019会议虽然取消了夏令时/冬令时切换,但是还未正式落地,所以目前还是会切换夏令时/冬令时
首先设置为柏林时间(欧洲中部时间):
rm /etc/localtime -rf && ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
准备测试代码:
#include <stdio.h>
#include <time.h>
int main() {
time_t current_time;
struct tm *time_info;
// Get current time
time(¤t_time);
time_info = localtime(¤t_time);
// Check if DST is in effect
if (time_info->tm_isdst > 0)
printf("夏令时\n");
else if (time_info->tm_isdst == 0)
printf("标准时间\n");
else
printf("Daylight Saving Time status is unknown.\n");
return 0;
}
#
#
# date -s "2024-3-31 01:59:55" && /usr/bin/timezone1
Sun Mar 31 01:59:55 CET 2024
标准时间
#
#
#
#
# date
Sun Mar 31 01:59:56 CET 2024
#
#
#
# date
Sun Mar 31 01:59:59 CET 2024
#
#
#
# date
Sun Mar 31 03:00:07 CEST 2024
#
# /usr/bin/timezone1
夏令时
#
#
#
tzdata 是由 INNA 组织维护: https://www.iana.org/time-zones
离线
中国曾经实行了6年的夏令时,我们来测试一下:
#
# rm /etc/localtime -rf && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#
#
#
# date -s "1985-7-31 01:59:55" && /usr/bin/timezone1
Wed Jul 31 01:59:55 CST 1985
标准时间
#
#
# date -s "1986-7-31 01:59:55" && /usr/bin/timezone1
Thu Jul 31 01:59:55 CDT 1986
夏令时
#
# date -s "1987-7-31 01:59:55" && /usr/bin/timezone1
Fri Jul 31 01:59:55 CDT 1987
夏令时
#
# date -s "1988-7-31 01:59:55" && /usr/bin/timezone1
Sun Jul 31 01:59:55 CDT 1988
夏令时
#
# date -s "1989-7-31 01:59:55" && /usr/bin/timezone1
Mon Jul 31 01:59:55 CDT 1989
夏令时
#
# date -s "1990-7-31 01:59:55" && /usr/bin/timezone1
Tue Jul 31 01:59:55 CDT 1990
夏令时
#
#
# date -s "1991-7-31 01:59:55" && /usr/bin/timezone1
Wed Jul 31 01:59:55 CDT 1991
夏令时
#
#
#
# date -s "1992-7-31 01:59:55" && /usr/bin/timezone1
Fri Jul 31 01:59:55 CST 1992
标准时间
#
#
离线
俄罗斯全境现在都是冬令时,不再进行切换:
# rm /etc/localtime -rf && ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
#
#
#
# date -s "1992-7-31 01:59:55" && /usr/bin/timezone1
Fri Jul 31 01:59:55 MSD 1992
夏令时
#
# date -s "2024-7-31 01:59:55" && /usr/bin/timezone1
Wed Jul 31 01:59:55 MSK 2024
标准时间
离线
土耳其全境都是夏令时,不再进行切换:
#
#
# rm /etc/localtime -rf && ln -s /usr/share/zoneinfo/Europe/Istanbul /etc/localt
ime
#
#
#
# date -s "2024-7-31 01:59:55" && /usr/bin/timezone1
Wed Jul 31 01:59:55 +03 2024
标准时间
#
#
# date -s "2010-7-31 01:59:55" && /usr/bin/timezone1
Sat Jul 31 01:59:55 EEST 2010
夏令时
#
#
离线