ABAP中時間戳的處理


UTC(UTC, Universal Time Coordinated,通用協調時)時間戳,分為長時間戳和段時間戳,其中長時間戳餐開始的系統的數據元素TIMESTAMPL,類型為DEC(21,7);而段時間戳參考的系統數據元素為TIMESTAMP,類型為DEC(15,0)。下文中如果沒有特指,一般都指的短時間戳。
 
1、獲取當前時間戳
GET TIME STAMP FIELD timestamp.
獲取當前系統的時間戳(這里的時間戳可以是長類型,也可以是短類型)
示例:
GET TIIME STAMP FIELD lv_timestamp.
 
2、使用CONVERT DATE生成指定時間的時間戳
CONVERT DATE date
              [TIME time [DAYLIGHT SAVING TIME dst] ]
        INTO TIME STAMP time_stamp TIME ZONE tz.
根據指定的日期、時間(可選是否為夏令時)和時區生成時間戳,其中[]圈起來的參數為可選參數,參數解釋如下:
date:指定的日期(DATS類型)
time:指定的時間(TIMS類型)
dst:夏令時標志(CHAR1類型)
time_stamp:(時間戳 DEC(15,0)類型)
tz:時區(CHAR06類型)
 
系統預留(系統結構為SYST,程序默認結構為SY)的時間變量有:
    • SY-DATUM:應用服務器日期;
    • SY-UZEIT:應用服務器時間;
    • SY-TZONE:應用服務器時區(INT4);
    • SY-DAYST:夏令時;
    • SY-DATLO:用戶本地日期;
    • SY-TIMLO:用戶本地時間;
    • SY-ZONLO:用戶本地時區(CHAR6)。
【注意】在實際測試過程中,即使手動調整本地電腦的時間為費正確的時間,發現系統用戶本地時間和服務器時間對應的系統變量的值是一樣的(正確的時間值),並不是真正的本地時間,可能是因為時區相同,沒有測出差別。
調用示范:
CONVERT DATE SY-DATLO TIME SY-TIMLO 
INTO TIME STAMP DATA(LV_TIMESTAMP) TIME ZONE SY-ZONLO.
 
3、使用CONVERT TIME  STAMP獲取時間戳對應的日期和時間信息
CONVERT TIME STAMP time_stamp
  TIME ZONE tz
                  INTO [DATE date]
                    [TIME time] [DAYLIGHT SAVING TIME dst].
根據制定的時間戳和時區,獲取對應的日期、時間、夏令時信息,其中[]圈起來的參數為可選參數,參數解釋如下:
time_stamp:(時間戳 DEC(15,0)類型)
tz:時區(CHAR06類型)
date:指定的日期(DATS類型)
time:指定的時間(TIMS類型)
dst:夏令時標志(CHAR1類型)
調用示范:
DATA: LV_TIMESTAMP TYPE TIMESTAMP VALUE '20190109112320'.
CONVERT TIME STAMP LV_TIMESTAMP TIME ZONE SY-ZONLO
INTO DATE DATA(LV_DATE)
   TIME DATA(LV_TIME).
 
4、使用系統函數來進行時間戳來與日期和時間進行轉換
系統中有大量的根據日期、時間、時區與時間戳進行互轉的函數,只需要在SE37下模糊匹配“*TIMESTAMP*”就可以查到大量的有用函數,以下為常見的幾個函數:
  • 根據制定的日期、時間、時區生成時間戳:IB_CONVERT_INTO_TIMESTAMP
  • 根據制定的時間戳和時區轉化成日期、時間:IB_CONVERT_FROM_TIMESTAMP
  • 把指定區域的時間戳轉化成日期和時間:LTRM_TIMESTAMP_CONVERT_FROM
  • 把指定區域的日期和時間轉化成時間戳:LTRM_TIMESTAMP_CONVERT_INTO
  • 把指定的日期和時間轉化成時間戳(默認本地時區):ABI_TIMESTAMP_CONVERT_FROM
  • 把指定的時間戳轉化成日期和時間(默認本地時區):ABI_TIMESTAMP_CONVERT_INTO
  • 獲取指定的遠程系統的時間戳:RSWR_TIMESTAMP_GET
實際上,通過查看這些函數的代碼可以發現,其實本質最核心的代碼還是調用CONVERT語句,因此只需要掌握CONVRT語句即可快速互轉時間戳與日期時間信息。
調用示范:
DATA: LV_TIMESTAMP TYPE TIMESTAMP.
CALL FUNCTION 'IB_CONVERT_INTO_TIMESTAMP'
      EXPORTING
         I_DATLO     = SY-DATLO
         I_TIMLO     = SY-TIMLO
         I_TZONE     = SY-ZONLO
       IMPORTING
         E_TIMESTAMP = LV_TIMESTAMP.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM