在ABAP中格式化时间,删除秒

时间:2015-08-27 21:37:18

标签: time sap abap

我想将时间(SY-TIMLO)格式化为SU01中的用户定义格式。对于美国用户,这通常涉及AM / PM。我找到的最简单的方法是:

lv_formatted_time = |{ lv_time TIME = USER }|

是否有一种简单的方法可以在不使用更广泛的方法的情况下删除秒数?

*-- Convert time to user time format based on environment setting.
*-- As we are not using SET COUNTRY this has the same effect as
*-- user settings in SU01 > Defaults > Time Format. US users will see AM/PM.

    CALL METHOD CL_ABAP_TIMEFM=>CONV_TIME_INT_TO_EXT
      EXPORTING
        TIME_INT            = lv_time
        WITHOUT_SECONDS     = ABAP_TRUE
        FORMAT_ACCORDING_TO = CL_ABAP_TIMEFM=>ENVIRONMENT
      IMPORTING
        TIME_EXT            = lv_formatted_time.

1 个答案:

答案 0 :(得分:4)

据我所知,使用字符串模板并不是一件容易的事。我建议坚持你已经提到过的方法。如果您对缩短代码感兴趣,并且因为您可能总是对WITHOUT_SECONDSFORMAT_ACCORDING_TO使用相同的值,则可以将其包装在带有返回参数的方法中,以便然后你的代码将包含像

这样的行
lv_formatted_time = format_time_wo_seconds( lv_time ).

作为替代方案,你可以使用一个宏 - 我不是这些宏块的巨大粉丝,但这是他们派上用场的地方之一:

DEFINE format_time_short.
  CALL METHOD CL_ABAP_TIMEFM=>CONV_TIME_INT_TO_EXT
    EXPORTING
      TIME_INT            = &1
      WITHOUT_SECONDS     = ABAP_TRUE
      FORMAT_ACCORDING_TO = CL_ABAP_TIMEFM=>ENVIRONMENT
    IMPORTING
      TIME_EXT            = &2.
END-OF-DEFINITION.

format_time_short lv_time lv_formatted_time.