正确使用 TZ、日期和时钟?

try*_*tch 8 linux arm date time

我正在为定制板开发 Buildroot 开发的 ARM/ulibc Linux 发行版。我试图理解两者之间的关系

如果我这样做,就像我在网上的几个例子中看到的那样:

# date --set "2013-04-09 15:06:30"
Tue Apr  9 15:06:30 CDT 2013
# hwclock --systohc --utc
# hwclock
Tue Apr  9 15:06:39 2013  -0.351552 seconds
Run Code Online (Sandbox Code Playgroud)

并重新启动,我得到:

.... boot messages ...
... setting system clock to 2013-04-09 20:07:31 UTC (1365538051)
.... boot messages ...
#
# date; hwclock;
Tue Apr  9 15:08:24 CDT 2013
Tue Apr  9 15:08:25 2013  -0.473164 seconds
#
# date -u; hwclock -u;
Tue Apr  9 20:08:44 UTC 2013
Tue Apr  9 15:08:45 2013  -0.397120 seconds
#
# date; hwclock --localtime
Tue Apr  9 15:09:07 CDT 2013
Tue Apr  9 20:09:08 2013  -0.686601 seconds
#
Run Code Online (Sandbox Code Playgroud)

那么,似乎 hwclock 认为本地时间UTC?出于某种原因,在应用-u它时实际上是应用时区吗?我有点困惑。谁能建议我应该怎么做?

编辑: 我应该注意到,作为一个 ARM + Busybox + uclibc,精简系统,我没有很多典型的目录和文件,比如 sysconfig 和 zoneinfo。

小智 0

我使用以下命令设置时间信息:

# setup local timezone
rm /etc/localtime
# setup for EDT and EST (+4 EDT; +5 EST)
ln -s /usr/share/zoneinfo/EST5EDT /etc/localtime
# setup for only EST (+5 EST)
#ln -s /usr/share/zoneinfo/EST /etc/localtime
# setup for only Daylight Saving Time
#ln -s /usr/share/zoneinfo/EDT /etc/localtime

rm /etc/timezone
echo "US/Eastern" > /etc/timezone
export TZ="/usr/share/zoneinfo/America/New_York"
Run Code Online (Sandbox Code Playgroud)

注意:此脚本运行后date -u MMDDhhmm使用原子表命令设置系统时钟,因为断电后计算机时间会漂移