FM将时间从24小时转换为12小时格式



我必须根据用户设置(包括时区(CET/IST等(和时间格式(24小时/12小时(来格式化UTC中的DateTime

我可以找到只将TIME ZONE作为参数并进行转换的CONVERT TIME STAMP语句:

DATA: lv_timestampl TYPE timestampl VALUE '20200219095959.0000000',
lv_date       TYPE d,
lv_time       TYPE t.
CONVERT TIME STAMP lv_timestampl TIME ZONE sy-zonlo INTO DATE lv_date TIME lv_time.

我的目标是在TimeZoneTimeFormat的基础上一起转换这个lv_timestampl

PS:我可以在CONVERT TIME STAMP语句之后对lv_time进行-12操作,并附加PM/AM,但我正在寻找一种标准的方法。

好吧,如果你找不到字符串模板的帮助,今天让我来帮你生活。

将时间戳转换为UTC:的模板

DATA(ld_tims_utc) = |{ lv_timestampl TIMESTAMP = ENVIRONMENT }|.

返回

19.02.2020 09:59:590000000

将时间戳转换为明确指定时区的模板:

DATA(ld_tims_zone) = |{ lv_timestampl TIMESTAMP = ENVIRONMENT TIMEZONE = 'CET' }|.

返回

19.02.2020 10:59:590000000

从时间戳获取时间和日期(不是timestampl,因此需要转换(:

cl_abap_tstmp=>systemtstmp_utc2syst( EXPORTING
utc_tstmp = CONV timestamp( lv_timestampl )
IMPORTING
syst_date = lv_date
syst_time = lv_time ).

12小时格式输出:

SET COUNTRY 'US'.
DATA(time_us) = |{ lv_time TIME = ENVIRONMENT }|. "gives 01:55:43 PM

24小时格式输出:

SET COUNTRY 'DE'.
DATA(time_de) = |{ lv_time TIME = ENVIRONMENT }|. "gives 13:55:43

对于AM/PM时间格式的输出,它们需要在表USR01(又名用户设置(或表t005x(又名国家/地区设置(的字段TIMEFM中进行维护(tcode OY01(。

FM HRVE_CONVERT_TIME可用于双向转换(将12小时转换为24小时和将24小时转换为12小时(。

您可以将结果与已找到的FM进行组合。

相关内容

  • 没有找到相关文章

最新更新