FM для перевода времени из 24-часового формата в 12-часовой? - PullRequest
1 голос
/ 19 февраля 2020

Мне нужно отформатировать DateTime в UT C на основе пользовательских настроек, которые включают его часовой пояс (CET / IST и т. Д. c) и формат времени (24 часа / 12 часов). .

Я могу найти оператор CONVERT TIME STAMP, который принимает в качестве параметра только TIME ZONE и выполняет это преобразование:

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.

Моя цель - преобразовать это lv_timestampl на основе TimeZone и TimeFormat вместе.

PS: Я мог бы просто сделать эту -12 манипуляцию lv_time после CONVERT TIME STAMP оператора и добавить PM/AM, но я ищу стандартный способ сделать это.

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

ОК, позвольте мне сегодня помочь вам, если вы не смогли найти справку по шаблонам строк .

Шаблон для преобразования метки времени в UT C:

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

возвращает

19.02.2020 09: 59: 59,0000000

Шаблон для преобразования метки времени в явно указанный часовой пояс:

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

возвращает

19.02.2020 10: 59: 59,0000000

Получение времени и даты из метки времени (не 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 их необходимо поддерживать в поле TIMEFM таблицы USR01 aka Пользовательские настройки или таблицы t005x aka Настройки страны (tcode OY01).

0 голосов
/ 19 февраля 2020

FM HRVE_CONVERT_TIME можно использовать для конвертации в обоих направлениях (конвертация с 12 до 24 часов и с 24 до 12 часов).

Вы можете комбинировать результаты с уже найденным FM.

...