Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 格林尼治标准时间_Date_Timestamp_Unix Timestamp_Aix_Timezone Offset - Fatal编程技术网

Date 格林尼治标准时间

Date 格林尼治标准时间,date,timestamp,unix-timestamp,aix,timezone-offset,Date,Timestamp,Unix Timestamp,Aix,Timezone Offset,在AIX上 date-u以GMT格式给出日期和时间 date给出本地时区中的日期和时间 date+%s以纪元时间给出本地时间 有没有办法以历元格式获取GMT时间 在我使用的AIX中,只有-n和-u选项可用(因此我无法使用-f选项) 我的目标是计算localtime和GMT之间的偏移量(以小时为单位)。我可以解析$TZ环境变量,这可能会很繁琐。相反,将两个历元时间差除以60应该可以大致给出答案。与您所说的相反,日期+%s没有“以历元时间给出本地时间”。Epoch是AIX(UNIX)时间开始计数的时

在AIX上

date-u
以GMT格式给出日期和时间
date
给出本地时区中的日期和时间
date+%s
以纪元时间给出本地时间

有没有办法以历元格式获取GMT时间

在我使用的AIX中,只有-n和-u选项可用(因此我无法使用-f选项)


我的目标是计算localtime和GMT之间的偏移量(以小时为单位)。

我可以解析
$TZ环境变量
,这可能会很繁琐。相反,将两个历元时间差除以60应该可以大致给出答案。

与您所说的相反,
日期+%s
没有“以历元时间给出本地时间”。Epoch是AIX(UNIX)时间开始计数的时刻(在时间结构中)。
time\u t
中的时间戳以自历元起的秒为单位,不计算闰秒。这是
date+%s
返回的内容。从
日期
手册页:

   %s
        Displays the number of seconds since January 1, 1970, Coordinated Universal Time (CUT).
在AIX上解析TZ并不像您想象的那么乏味。与Linux和其他UNIX系统不同,在AIX上构建TZ的方式始终是
std offset dst offset,rule
,因此以下内容可以从TZ中提取当前偏移量:

echo $TZ | sed -e 's/.*'`date +%z`'\([-0-9:]*\).*/\1/'
然而,我认为最好、最简单的解决方案是一个迷你C程序,它可以显示您想要的:

#include <time.h>
#include <stdio.h>

int main()
{
  tzset();
  printf("%d\n", timezone);
}
有关更多信息,请参阅:

  • 人类环境
  • 人工日期
  • manctime

与您所说的相反,
日期+%s
没有“在大纪元时间中给出本地时间”。Epoch是AIX(UNIX)时间开始计数的时刻(在时间结构中)。
time\u t
中的时间戳以自历元起的秒为单位,不计算闰秒。这是
date+%s
返回的内容。从
日期
手册页:

   %s
        Displays the number of seconds since January 1, 1970, Coordinated Universal Time (CUT).
在AIX上解析TZ并不像您想象的那么乏味。与Linux和其他UNIX系统不同,在AIX上构建TZ的方式始终是
std offset dst offset,rule
,因此以下内容可以从TZ中提取当前偏移量:

echo $TZ | sed -e 's/.*'`date +%z`'\([-0-9:]*\).*/\1/'
然而,我认为最好、最简单的解决方案是一个迷你C程序,它可以显示您想要的:

#include <time.h>
#include <stdio.h>

int main()
{
  tzset();
  printf("%d\n", timezone);
}
有关更多信息,请参阅:

  • 人类环境
  • 人工日期
  • manctime

1)纪元不是一种格式,而是一个时间点(
1970-01-01T00:00:00Z
)2)日期+%z怎么样?问一个可能很明显的问题,你不能做
日期-u+%s
?(很抱歉,我再也不能访问AIX了(它可能与大多数人现在使用的Linux环境有很大不同),祝你好运!您面临的问题是,本地时间和UTC自历元起的秒数是相同的。要确定时区偏移,您必须确定时间格式输出之间的差异,这充其量是痛苦的。正如@marekful所建议的,寻找
%z
支持;这应该会给你一个相对于GMT的±hhmm的时区偏移量(负为UTC以西-因此在美国/太平洋时区,在Mac OS X上,`date+%z当前给出-0700,这是太平洋夏季(夏令时)时间的偏移量)。@Sheller,date-u+%s和date+%s给出了相同的数字。@SandyR:谢谢你的检查并让我们知道。像往常一样,约翰纳桑理解这个问题的变幻莫测。AIX是否有
+%z
?祝你好运1) epoch不是一种格式,而是一个时间点(
1970-01-01T00:00:00Z
)2)日期+%z怎么样?问一个可能很明显的问题,你不能做
date-u+%s
?(很抱歉,我再也不能访问AIX了(它可能与大多数人现在使用的Linux环境有很大不同),祝你好运!您面临的问题是,本地时间和UTC自历元起的秒数是相同的。要确定时区偏移,您必须确定时间格式输出之间的差异,这充其量是痛苦的。正如@marekful所建议的,寻找
%z
支持;这应该会给你一个相对于GMT的±hhmm的时区偏移量(负为UTC以西-因此在美国/太平洋时区,在Mac OS X上,`date+%z当前给出-0700,这是太平洋夏季(夏令时)时间的偏移量)。@Sheller,date-u+%s和date+%s给出了相同的数字。@SandyR:谢谢你的检查并让我们知道。像往常一样,约翰纳桑理解这个问题的变幻莫测。AIX是否有
+%z
?祝你好运注意:Aix6+确实支持Olson数据库,因此TZ=Europe/Budapest是完全有效的。我的AIX知识(和硬件)没有超过5.3,感谢您提供的信息!注意:Aix6+确实支持Olson数据库,因此TZ=Europe/Budapest是完全有效的。我的AIX知识(和硬件)没有超过5.3,感谢您提供的信息!