Функции локалей и picture-шаблонов FormCalc

Включите TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript, чтобы использовать эти функции в общих событиях FormCalc, скриптах calculate и validate через поставляемый движок QuickJS

Выбор локали

Исполняемое поле наследует ближайший непустой атрибут locale от предков; пустая цепочка выбирает настроенную нативную локаль Windows или Linux через ICU

Запись localeSet в документе переопределяет нативные символы чисел и валют, названия месяцев, дней и meridiem, а также шаблоны даты, времени и чисел; отсутствующие значения наследуются от системных данных, а для кастомных имён локалей действует fallback на en_US

Идентификаторы локалей принимают написание с подчёркиванием или дефисом без учёта регистра; вычисляемые имена вроде Concat("de", "_DE") разрешаются в момент исполнения

Внутренние запросы локалей делят дедлайн события и допускают 64 именованных поиска, 256 кодовых единиц UTF-16 на идентификатор и 2 МиБ суммарных метаданных; повторы восстанавливают JavaScript-checkpoint, а зафиксированный replay сессии потребляет записанные метаданные без повторного вызова провайдера

Picture-функции

ФункцияПоведение
Format(picture, value, ...)Форматирует значения клаузами date, time, datetime, num или text; стандартные составные клаузы форматируют одно и то же значение, а опциональное расширение принимает соответствующие аргументы-значения
Parse(picture, text)Разбирает типизированные клаузы, составные клаузы или альтернативы в текст ISO-даты/времени, десятичное число в тексте или текст без литералов

Используйте date(de_DE){D. MMMM YYYY} для явной локали, num.currency для стиля локали и вертикальную черту для альтернатив; литералы в кавычках и удвоенные апострофы сохраняют символы как есть

Стили date, time и datetime берут разрешённые шаблоны default, short, medium, long или full; стандартный числовой шаблон localeSet даёт и num.decimal, и его целочисленную часть для num.integer

Picture-шаблоны даты и времени поддерживают год, месяц, день, названия дней недели, 12- и 24-часовые часы, минуты, секунды, доли миллисекунд, meridiem и явные смещения GMT/UTC; неверные даты вроде 30 февраля возвращают пустой текст

Числовые picture-шаблоны поддерживают обязательную 9, опциональную z, Z с пробельным дополнением, разделители целой и дробной части и групп разрядов, символы валют и коды валют ISO, проценты, знаки, скобки, суффиксы credit/debit и подразумеваемую десятичную позицию

Текстовые picture-шаблоны поддерживают A для букв Unicode, O или 0 для буквенно-цифровых символов Unicode, 9 для цифр и X для кодовых точек Unicode, включая дополнительные символы

Продвинутые picture-клаузы добавляют научную нотацию чисел с сохранением дробной точности, порядковые и недельные даты, дополнительные часы, глобальные символы и пробелы, а также разбор составного ввода

Параметры null возвращают null; неверные picture-шаблоны, неверные значения или недоступные локали возвращают пустой текст

target = Format("num(de_DE){z,zz9.99}", 1234.5)
target = Parse("date{MMM D, YYYY}", "Sep 1, 2002")
target = Format("date{YYYY-MM-DD} 'at' time{HH:MM}", "2024-03-15T13:45:09")

Функции даты и времени

ФункцияПараметры и результат
DateFmt(style=0, locale), TimeFmt(style=0, locale)Возвращают XFA-шаблоны для default 0, short 1, medium 2, long 3 или full 4; неверные стили выбирают default
Date2Num(text, picture, locale)Возвращает серийные дни, где 1900-01-01 — день 1; опущенный picture берёт локаль по умолчанию и также принимает ISO-даты
Num2Date(serial, picture, locale)Форматирует серийные дни по заданному или дефолтному date-шаблону локали
IsoDate2Num(text)Разбирает компактные или написанные с дефисами ISO-даты, включая опциональные суффиксы времени
IsoTime2Num(text), Time2Num(text, picture, locale)Возвращают миллисекунды от полуночи GMT плюс 1; явные смещения применяются, а при их отсутствии берётся текущий часовой пояс
Num2GMTime(serial, picture, locale), Num2Time(serial, picture, locale)Форматируют временные серийные значения от 1 до 86400000 в GMT или текущем часовом поясе
Date(), Time()Возвращают серийные значения текущих даты и времени, а во время replay сессии используют записанные входы часов

Опущенные picture-шаблоны Num2Date теперь дают локализованный вывод; вызывающий код, которому нужен ISO-вывод, переведите на Num2Date(serial, "YYYY-MM-DD")

Единицы, кодирование и текстовые утилиты

ФункцияПараметры и результат
UnitType(measurement)Распознаёт алиасы in, cm, mm, pt, pc и mp; нераспознанные единицы считаются дюймами
UnitValue(measurement, targetUnit="in")Преобразует величины из расчёта 72 пункта в дюйме, 12 пунктов в пике и 1000 миллипунктов в пункте
Encode(text, encoding="url"), Decode(text, encoding="url")Поддерживают URL-эскейпинг, XML-сущности и именованные/числовые HTML-сущности с проверкой скаляров Unicode
Uuid(style=0)Возвращает 32 шестнадцатеричные цифры или стиль 1 с дефисами, с битами версии 4 и варианта; replay использует записанные случайные входы
WordNum(value, style=0, locale)Даёт числительные прописью по-английски, суммы в долларах для стиля 1 или доллары и центы для стиля 2; неверные числовые домены возвращают звёздочку

Текущие границы picture-поддержки

Альтернативные эры, идеографические или полноширинные представления, локализованные алфавиты цифр, локализованные символы шаблонов только для отображения и полные политики группировки остаются отдельными целями; WordNum выдаёт английские слова

Нативный вычислитель скаляров сохраняет прежние функции ISO и финансов; функции локалей и picture требуют общего исполнения

API более низкого уровня

TXFALocaleData, HPDFXFALoadLocale, HPDFXFALoadDocumentLocale и HPDFXFALocaleJavaScript открывают метаданные локалей Unicode и безопасную сериализацию движка

HPDFXFAExecuteJavaScriptEvent принимает TXFALocaleDataProvider для кастомного поиска метаданных в режиме только для чтения