FormCalc ロケール / ピクチャー関数

TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript を有効にすると、同梱 QuickJS エンジン経由で汎用 FormCalc イベントや calculate / validate スクリプトの中でこれらの関数を使えます

ロケールの選択

実行中のフィールドは祖先から最も近い空でない locale 属性を継承します。空のチェーンは設定されたネイティブ Windows / Linux ICU ロケールを選びます

ドキュメントの localeSet エントリーはネイティブの数値 / 通貨シンボル、月 / 日 / 午前午後の名前、日付 / 時刻 / 数値パターンを上書きします。欠けている値はシステムデータを継承し、カスタムロケール名には en_US フォールバックが使われます

ロケール識別子はアンダースコア / ハイフン表記を大文字小文字を区別せず受け付けます。Concat("de", "_DE") のような計算された名前は実行時に解決されます

内部のロケール要求はイベントデッドラインを共有し、名前付きルックアップ 64 件、識別子あたり 256 UTF-16 コード単位、集計メタデータ 2 MiB を許します。リトライは JavaScript チェックポイントを復元し、コミット済みセッションリプレイは記録されたメタデータを消費してプロバイダーを再呼び出ししません

ピクチャー関数

関数挙動
Format(picture, value, ...)date、time、datetime、num、text 句を使って値を書式化します。標準の複合句は同じ値を書式化し、省略可能な拡張は対応する値引数を受け付けます
Parse(picture, text)型付き句、複合句、選択肢を ISO 日付 / 時刻テキスト、10 進数値テキスト、リテラルを除去したテキストへパースします

明示的なロケールには date(de_DE){D. MMMM YYYY} を、ロケールスタイルには num.currency を、選択肢には縦棒を使います。引用符リテラルと二重アポストロフィはリテラル文字を保持します

日付 / 時刻 / datetime スタイルは解決された default、short、medium、long、full の各パターンを使います。標準 localeSet の数値パターンは num.decimal と、num.integer 向けのその整数部を供給します

日付 / 時刻ピクチャーは、年、月、日、曜日名、12 / 24 時間時計、分、秒、小数ミリ秒、午前 / 午後、明示的な GMT / UTC オフセットに対応します。2 月 30 日のような無効な日付は空テキストを返します

数値ピクチャーは、必須の 9、省略可能な z、スペース埋めの Z、小数 / グループ区切り、通貨シンボルと ISO 通貨コード、パーセント、符号、括弧、貸方 / 借方サフィックス、暗黙小数基数に対応します

テキストピクチャーは、Unicode 文字に A、Unicode 英数字に O または 0、数字に 9、Unicode コードポイント(補助文字を含む)に X に対応します

高度なピクチャー句は、数値の科学表記と小数精度の保持、序数 / 週日付、追加の時計、グローバル文字 / 空白シンボル、複合入力パースを追加します

null パラメーターは null を返します。無効なピクチャー、無効な値、利用できないロケールは空テキストを返します

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)default 0、short 1、medium 2、long 3、full 4 向けの XFA パターンを返します。無効なスタイルは default を選びます
Date2Num(text, picture, locale)1900-01-01 を 1 日目とする通算日数を返します。picture を省略するとロケールデフォルトを使い、ISO 日付も受け付けます
Num2Date(serial, picture, locale)通算日数を、渡されたまたはデフォルトのロケール日付ピクチャーで書式化します
IsoDate2Num(text)コンパクトまたはハイフン付き ISO 日付をパースします。省略可能な時刻サフィックスを含みます
IsoTime2Num(text)、Time2Num(text, picture, locale)GMT 真夜中以降のミリ秒 + 1 を返します。明示的なオフセットは適用され、オフセットがない場合は現在のタイムゾーンを使います
Num2GMTime(serial, picture, locale)、Num2Time(serial, picture, locale)1〜86400000 の時刻通算値を GMT または現在のタイムゾーンで書式化します
Date()、Time()カレント日付 / 時刻通算値を返します。セッションリプレイ中は記録されたクロック入力を使います

picture を省略した Num2Date はローカライズされた出力を返すようになりました。ISO 出力を要求する呼び出し側は Num2Date(serial, "YYYY-MM-DD") へ移行してください

単位、エンコーディング、テキストユーティリティー

関数パラメーターと結果
UnitType(measurement)in、cm、mm、pt、pc、mp の別名を認識します。未認識の単位はインチがデフォルトです
UnitValue(measurement, targetUnit="in")1 インチ 72 ポイント、1 パイカ 12 ポイント、1 ポイント 1000 ミリポイントで単位を変換します
Encode(text, encoding="url")、Decode(text, encoding="url")URL エスケープ、XML エンティティー、Unicode スカラー検証つきの HTML 名前 / 数値エンティティーに対応します
Uuid(style=0)32 桁の 16 進、またはハイフンつきのスタイル 1 を、バージョン 4 とバリアントビットつきで返します。リプレイは記録されたランダム入力を使います
WordNum(value, style=0, locale)英語の数値単語、スタイル 1 のドル金額、スタイル 2 のドルとセントを生成します。無効な数値ドメインはアスタリスクを返します

現在のピクチャー境界

別の元号、漢数字 / 全角表現、ローカライズされた数字アルファベット、ローカライズされた表示専用パターンシンボル、完全なグループ化ポリシーは別のターゲットのままです。WordNum は英語の単語を出力します

ネイティブスカラー評価器は既存の ISO / 金融関数を保持します。ロケール / ピクチャー関数には汎用実行が必要です

低レベル API

TXFALocaleData、HPDFXFALoadLocale、HPDFXFALoadDocumentLocale、HPDFXFALocaleJavaScript は Unicode ロケールメタデータと安全なエンジンシリアライズを公開します

HPDFXFAExecuteJavaScriptEvent はカスタムの読み取り専用メタデータルックアップ向けに TXFALocaleDataProvider を受け付けます