[問題] 夏令時區(embed linux)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Embed linux gcc
linux ver:mips-linux-2.6.31
ntpclient
比較(my pc)
Lubuntu 12.04
ntpd
問題(Question):
請容許我以此方式敘述問題…
[目的]
在device上判斷設定的國家是否有夏令(daylight saving time)
問出在以下platform的第二設(澳洲夏令)
[測試方式]
判斷是否有夏令code{ntp_dst}:
time(&clock_1);
tm1 = *localtime(&clock_1);
tm1.tm_isdst = 0;
tm2 = tm1;
tm2.tm_isdst = -1;
mktime(&tm1);
mktime(&tm2);
strftime(szBuffer_1, nBufferlen, "%Y-%m-%d %h:%m:%s", &tm1);
strftime(szBuffer_2, nBufferlen, "%Y-%m-%d %h:%m:%s", &tm2);
/* 如差1hr,有夏令時間 */
printf("%s, %s", szBuffer_1, szBuffer_2);
pc端:
第一設{美國夏令時間:2013/3/10開始,2013/11/3結束}
cmd:cp /usr/share/zoneinfo/America/New_York /etc/localtime
cmd:date
Sun Aug 25 16:00:00 CST 2013 => ......EDT 2013
cmd:ntp_dst
有夏令…試過3/9, 3/10 & 11/3, 11/4…符合夏令區間
第二設{澳洲夏令時間:2013/4/7結束,2013/10/6開始}
……重覆以上……也符合
platform:
第一設{美國夏令:2013/3/10開始,2013/11/3結束}
試過cp ...../America/New_York .../localtime但沒作用…找到是
判斷etc/TZ,所以:
echo "EST5EDT" > /etc/TZ (/America/New_York 最後行的時區)
cmd:date
Sun Aug 25 16:00:00 UTC 2013 => ......EDT 2013
cmd:ntp_dst
有夏令…試過3/9, 3/10.....符合夏令區間
第二設{澳洲夏令:2013/3/10開始,2013/11/3結束}
echo "EST-10EST" > /etc/TZ (/Australia/Melbourne 最後一行的時區)
cmd:date
Sun Aug 25 16:00:00 UTC 2013 => ......EST 2013
cmd:ntp_dst
有夏令…不合理!!!!!!!!!!! 因澳洲夏令(2013/4/7結束,2013/10/6開始)
---> 問題點:
將日期改3/9, 3/10, 11/3, 11/4,竟符合美國夏令時間????????
補充說明(Supplement):
百思不解為何在platform設定澳洲時區後仍是美國夏令區間?
希望有人能指點小弟一二…感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.224.210.183
→
08/26 16:58, , 1F
08/26 16:58, 1F