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
).
我喜欢你的最终解决方案。如果它解决了你的问题,你应该把它复制到答案中。几天后,您将能够将其标记为正确的答案。 – Esti 2012-04-04 00:04:17