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

标签 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.

最佳答案

据我所见,使用字符串模板并非易事。我建议坚持你已经提到的方法。如果您对缩短代码感兴趣并且因为您可能总是对 WITHOUT_SECONDS 使用相同的值和 FORMAT_ACCORDING_TO ,你可以将它包装在一个带有返回参数的方法中,这样你的代码就会包含类似的行

lv_formatted_time = format_time_wo_seconds( lv_time ).

作为替代方案,您可以使用宏 - 我不是这些模块化的 super 粉丝,但这是它们派上用场的地方之一:
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.

关于abap - 在 ABAP 中格式化时间,删除秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32259876/

相关文章:

abap - SAP 逻辑数据库隐式包含宏。如何?

c++ - 从 VBA Excel 调用 SAP 客户端

class - 获取所有类属性。如何?

abap - 数据声明中%符号的含义是什么?

dropdown - 如何在列表框中设置值?

可以在 RFC 用户下调试吗?

exception - 捕获 SAPSQL_DATA_LOSS

abap - Case 语句中的变量封装

unix - 在 SAP ABAP 中创建文件时如何设置(unix)权限?

abap - 功能模块中的可选参数?