Насколько я знаю, класс DATE_TIME
не содержит никакой информации о часовом поясе, в котором предполагается дата и время.
Если вашему регистратору требуется время UTC, вы можете использовать:
create l_date_time.make_now_utc
вместо:
create l_date_time.make_now
Обратите внимание, что библиотеки Gobo Eiffel имеют некоторую элементарную поддержку часовых поясов, но это не лучше, чем l_date_time.hour_add (-3)
, потому что дата / время нужнычтобы быть преобразованным из одного часового пояса в другой перед печатью.
local
l_date_time: DT_DATE_TIME
l_time_zone: DT_FIXED_OFFSET_TIME_ZONE
l_date_time_formatter: ST_XSD_DATE_TIME_FORMAT
s: STRING
do
create l_date_time_formatter
create l_time_zone.make_hours_minutes (-3, 0)
l_date_time := {DT_SHARED_SYSTEM_CLOCK}.system_clock.date_time_now
s := l_date_time_formatter.date_time_to_string (l_time_zone.date_time_to_utc (l_date_time))
Существует также класс DT_FIXED_OFFSET_ZONED_DATE_TIME
, но я боюсь, что он не сделает приведенный выше код менее подробным, потому что вам все еще нужно предоставитьк нему относятся дата и время и связанный с ним часовой пояс.
Возможно, вы также захотите взглянуть на эту другую библиотеку Eiffel: библиотека даты / времени ISO8601