2012-04-03 272 views
5

您有沒有人建議如何將給定的UTC時間戳轉換爲系統時區的日期和時間?如何將UTC時間戳轉換爲ABAP中的系統日期和時間

從UTC時間戳轉換爲用戶的本地時區是很容易,你可能只是做:

CONVERT TIME STAMP lv_utc_timestamp TIME ZONE sy-zonlo 
      INTO DATE lv_local_date TIME lv_local_time. 

但如何做到這一點的系統時間 - 需要在很多情況下,系統時間,例如:當調用JOB_CLOSE功能模塊時。我想出迄今唯一的解決辦法是這樣的:

SELECT SINGLE * FROM TTZCU INTO ls_ttzcu. 
CONVERT TIME STAMP lv_utc_timestamp TIME ZONE ls_ttzcu-tzonesys 
      INTO DATE lv_system_date TIME lv_system_time. 

已經是這個最佳的解決方案,也可以將系統時區以另一種方式來獲取? 是否總是有一個有效的時區,從表TTZCU中的條目預計?有任何想法嗎?

UPDATE: @rmtiwari建議在Twitter上,該TTZCU的FLAGACTIVE標誌也應進行檢查,所以修改後的聲明將是

SELECT SINGLE * FROM TTZCU INTO ls_ttzcu WHERE flagactive = abap_true. 
CONVERT TIME STAMP lv_utc_timestamp TIME ZONE ls_ttzcu-tzonesys 
      INTO DATE lv_system_date TIME lv_system_time. 

UPDATE2:我已經找到了另一種方式,這是可能是最好的:

cl_abap_tstmp=>systemtstmp_utc2syst(
      EXPORTING utc_tstmp = lv_utc_timestamp 
      IMPORTING syst_date = lv_system_date " System Date 
         syst_time = lv_system_time " System Time 
      ). 
+0

我喜歡你的最終解決方案。如果它解決了你的問題,你應該把它複製到答案中。幾天後,您將能夠將其標記爲正確的答案。 – Esti 2012-04-04 00:04:17

回答

8

最好的辦法似乎是:

cl_abap_tstmp=>systemtstmp_utc2syst(
     EXPORTING utc_tstmp = lv_utc_timestamp 
     IMPORTING syst_date = lv_system_date " System Date 
        syst_time = lv_system_time " System Time 
     ). 
相關問題