Ошибка словаря данных Quickfix - повторяющаяся групповая ошибка

Фон

Объект JavaScript Date JavaScript отслеживает время в UTC внутренне, но обычно принимает вход и выход в локальное время компьютера, на котором он запущен. У этого нет никаких средств для работы со временем в других часовых поясах. Вы можете анализировать и выводить даты, которые являются UTC или Local, но вы не можете напрямую работать с другими часовыми поясами.

Чтобы быть абсолютно точным, внутреннее представление объекта Date - это единственное число, представляя количество миллисекунд, прошедших с момента 1970-01-01 00:00:00 UTC, независимо от секунд прыжка. В объекте Date нет часового пояса или строкового формата. Когда используются различные функции объекта Date, локальный часовой пояс компьютера применяется к внутреннему представлению. Если функция выдает строку, тогда локальная информация компьютера может быть принята во внимание, чтобы определить, как создать эту строку. Информация зависит от каждой функции, а некоторые из них специфичны для реализации.

Библиотеки

К счастью, есть библиотеки, которые могут это сделать. Они реализуют стандартную базу данных о часовых поясах Olson / IANA в JavaScript. У некоторых есть накладные расходы, если вы работаете в веб-браузере, так как база данных может быть немного большой, если вы хотите все это. К счастью, многие из этих библиотек позволяют выборочно выбирать зоны, которые вы хотите поддерживать, делая размер данных более приемлемым. Некоторые из них используют современные функции для получения данных о часовых поясах из API Intl, а не для их отправки.

Для этого есть несколько библиотек:

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

Момент-часовой пояс является расширением moment.js и приводит к его собственным данным часового пояса.

js-joda - это JavaScript реализация Joda-Time API (с Java) и включает поддержку часового пояса через отдельный модуль.

BigEasy / TimeZone также находится на правильном пути.

WallTime- js достиг конца жизни , а владельцы мигрируют в момент-время.

TimeZoneJS был вокруг самого длинного, но, как известно, имеют некоторые давние ошибки, особенно при переходах на летнее время. Надеюсь, они будут исправлены в какой-то момент в будущем.

tz.js также существует некоторое время, но не очень хорошо документировано, IMHO.

Вы должны оценить эти библиотеки, чтобы увидеть, что будет отвечать вашим потребностям. Если вы не уверены, перейдите с моментом / моментом-временем.

Встроенная поддержка в современных браузерах

Если вы можете ограничить свое использование в современных веб-браузерах, теперь вы можете сделать следующее без каких-либо специальных Библиотеки:

new Date().toLocaleString("en-US", {timeZone: "America/New_York"})

Это не комплексное решение, но оно работает для многих сценариев, которые требуют только преобразования вывода (от UTC или местного времени до определенного часового пояса, но не в другом направлении). Это часть API интернационализации ECMAScript (ECMA-402). Подробнее см. В этой записи . Эта таблица совместимости отслеживает, какие версии поддерживаются. Это API Intl, упомянутый выше, что некоторые библиотеки теперь используют внутренне.

0
задан cutter_buck 7 March 2019 в 21:22
поделиться

1 ответ

Вам нужно будет указать, что именно у вас есть в Словаре данных, чтобы было легче увидеть, в чем вы ошибаетесь.

Используя предоставленную вами информацию, я предполагаю, что ваш словарь данных выглядит следующим образом?

<group name="NoMDEntryTypes" required="N">      
    </group>

Однако MDEntryType должен быть внутри повторяющейся группы NoMDEntryTypes, как показано ниже.

 <group name="NoMDEntryTypes" required="N">
            <field name="MDEntryType" required="N"/>
    </group>
0
ответ дан S.Davide 7 March 2019 в 21:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: