Unix是否在内部存储机器与GMT的偏移量?例如:印度标准时间是GMT + 5:30.is这5:30存储在哪里?我需要它在如下脚本中使用
if[[ off is "some value"]] then some statements fi
c7rzv4ha1#
传统上,在UNIX中,内核以独立于时区的形式保存当前时间,这是它向应用程序报告的内容。应用程序会参考环境变量和/或用户配置(对于不同的用户或同一个用户的不同会话,这些变量可能不同)来确定报告时间的时区。为此,磁盘上保存了一些表,其中包含系统所知的所有时区的偏移量(这些表需要根据夏令时算法的政治变化不断更新)。
vlurs2pr2#
下面的程序在EDT中为我打印'-04:00',并在我将TZ设置为'Asia/Kolkata'时打印'04:30':
#include <stdio.h> #include <time.h> int main () { int hours; int minutes; int negative_sign = 1; tzset (); // printf ("tzname: %s tzname[1]: %s\n", tzname [0], tzname [1]); // printf ("DST: %d\n", daylight); /* 0 when no DST */ // printf ("timezone: %ld\n", timezone); /* 'timezone' is the number of seconds west of GMT */ /* It is negative for tzs east of GMT */ if (timezone <= 0) { timezone = -timezone; negative_sign = 0; } if (daylight) { timezone -= 3600; /* substract 1h when DST is active */ if (timezone <= 0) { timezone = -timezone; negative_sign = 0; } } timezone /= 60; /* convert to minutes */ hours = timezone / 60; minutes = timezone % 60; printf ("%s%02d:%02d\n", (negative_sign ? "-" : ""), hours, minutes); return 0; }
您可以随意使用/更改任何您想要的内容,然后从您的shell脚本中调用它。
j8yoct9x3#
内核在内部保存GMT时间,当请求本地时间时,使用时区信息计算偏移量。这样,如果需要更改时区,在内部,时钟不需要更改。
g6ll5ycj4#
在内核或驱动程序中,没有。通常,它存储在一个名为/etc/localtime的文件中,该文件通常是一个指向其他位置的文件的链接,该文件包含(以压缩形式)将GMT转换为本地时间的所有“规则”,包括夏令时的开始和结束时间、与GMT的偏移量等。
4条答案
按热度按时间c7rzv4ha1#
传统上,在UNIX中,内核以独立于时区的形式保存当前时间,这是它向应用程序报告的内容。
应用程序会参考环境变量和/或用户配置(对于不同的用户或同一个用户的不同会话,这些变量可能不同)来确定报告时间的时区。为此,磁盘上保存了一些表,其中包含系统所知的所有时区的偏移量(这些表需要根据夏令时算法的政治变化不断更新)。
vlurs2pr2#
下面的程序在EDT中为我打印'-04:00',并在我将TZ设置为'Asia/Kolkata'时打印'04:30':
您可以随意使用/更改任何您想要的内容,然后从您的shell脚本中调用它。
j8yoct9x3#
内核在内部保存GMT时间,当请求本地时间时,使用时区信息计算偏移量。这样,如果需要更改时区,在内部,时钟不需要更改。
g6ll5ycj4#
在内核或驱动程序中,没有。
通常,它存储在一个名为/etc/localtime的文件中,该文件通常是一个指向其他位置的文件的链接,该文件包含(以压缩形式)将GMT转换为本地时间的所有“规则”,包括夏令时的开始和结束时间、与GMT的偏移量等。