关于gmtoff的澄清

时间:2016-07-07 12:08:06

标签: sas

我在

下面有两行
 %let dl="06jul2016"
 date=dhms("&dl",d,00,00,00);
 date1=dhms("&dl",d,00,00,00)-gmtoff();
 date2=dhms("&dl",d,24,00,00)-gmtoff();

输出

date=2016-07-06T00:00:00
date1=2016-07-06T04:00:00
date2=2016-07-06T04:00:00

有人能解释一下结果吗。

Thannkyou

2 个答案:

答案 0 :(得分:1)

我无法重现您的输出。整理完代码后,我得到了一些略有不同的输出:

代码:

%let dl="06jul2016"d;
data _null_;
date=dhms(&dl,00,00,00);
date1=dhms(&dl,00,00,00)-gmtoff();
date2=dhms(&dl,24,00,00)-gmtoff();
format  date: is8601dt.;
put (_all_) (=/);
run;

输出:

 date=2016-07-06T00:00:00
 date1=2016-07-06T00:00:00
 date2=2016-07-07T00:00:00

这更接近你的期望吗?

答案 1 :(得分:0)

gmtoff()是格林威治标准时间的修正函数。因此,根据您的计算机时区,结果会有所不同。输入时间为GMT,根据您当地的时区x小时数被加/减。当您使用-gmtoff()时,您正在减去校正因子。这可能会产生不必要的结果。

还是date1& date2应该产生一天的差异。你的输出似乎有些东西。

相关问题