2016-07-07 26 views
0

澄清我有兩個線下關於gmtoff

%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

輸出與您期望的結果有何不同? – user667489

+0

您的代碼不應該按原樣工作,所以我懷疑您還有其他事情正在進行。你錯過了'd'來指定一個日期文字,在d之前你有一個額外的逗號? – Reeza

回答

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 

那是更接近你期待什麼呢?

0

gmtoff()是格林威治標準時間的修正函數。所以根據你的電腦時區,結果會有所不同。輸入時間爲格林尼治標準時間,取決於您當地的時區x小時數被添加/減少。當您使用-gmtoff()時,您正在減去修正係數。這可能會產生不希望的結果。

也date1 & date2應產生一天的差異。有些東西似乎與您的輸出。