Как изменить формат переменных даты по умолчанию в ходе OpenEdge?

#openedge #progress-4gl

#openedge #прогресс-4gl

Вопрос:

Формат даты по умолчанию при отображении дат — ДД / ММ / ГГ

Я хочу изменить это на ДД.ММ.ГГГГ

Это всего лишь простая программа:

 DEFINE VARIABLE daDate AS DATE NO-UNDO.

daDate = TODAY.

MESSAGE daDate.
  

В настоящее время вывод выглядит следующим образом: 16/09/20

Я попытался добавить ФОРМАТ «99.99.9999» после имени переменной следующим образом: DEFINE VARIABLE daDate FORMAT "99.99.9999" AS DATE NO-UNDO. но это вообще не изменило результат.

Когда я вместо того, чтобы MESSAGE использовать DISPLAY , а затем записать его с помощью FORMAT, тогда отображается правильный формат: DISPLAY daDate FORMAT "99.99.9999".

Я делаю что-то совершенно неправильно или я что-то упускаю?

Ответ №1:

Сначала выражение, которое вы сообщаете, будет преобразовано в символ, поэтому вместо этого вы можете взять под контроль это преобразование:

 MESSAGE STRING(daDate,"99.99.9999").
  

Комментарии:

1. Черт, это было так просто. Большое спасибо!

2. У вас есть другие способы получить другие форматы, если вам нужно. Существует функция ISO-DATE, которая может использоваться как ISO-DATE(daDate) и возвращает дату в формате AAAA-MM-DD, а также функции YEAR, MONTH и DAY, которые используются так же, как ISO-DATE, и возвращают, соответственно, часть года, часть месяца и часть дня вашей переменной ДАТЫ в целых числах, позволяя форматировать каждую из них так, как вам нужно. Надеюсь, это поможет.

Ответ №2:

 DEFINE VARIABLE hoy         AS CHARACTER    NO-UNDO.    
hoy =  STRING (DAY (TODAY), "99")   "." 
       STRING (MONTH (TODAY), "99")   "."
       STRING (YEAR (TODAY)) .
Message hoy.