如何在ABAP中将UTC时间戳转换为系统日期和时间



你们有人建议如何将给定的UTC时间戳转换为系统时区的日期和时间吗?

从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表中的条目是否总是有一个有效的时区?有什么想法吗?

更新:@rmtiwari在推特上建议,也应该检查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.

更新2:我找到了另一种方法,可能是最好的:

    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
           ).

最好的方法似乎是:

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
       ).

相关内容

  • 没有找到相关文章