我在
下面有两行 %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
答案 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应该产生一天的差异。你的输出似乎有些东西。