FormCalc locale 与 picture 函数
启用 TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript 即可在通用 FormCalc 事件与 calculate、validate 脚本中通过随附的 QuickJS 引擎使用这些函数
locale 选择
执行字段从其祖先继承最近的非空 locale 属性;空链选择配置的原生 Windows 或 Linux ICU locale
文档 localeSet 条目覆盖原生数字/货币符号、月/日/午前午后名称与日期/时间/数字模式;缺失值继承系统数据,自定义 locale 名以 en_US 兜底
locale 标识符接受下划线与连字符拼写,大小写不敏感;Concat("de", "_DE") 之类的计算名在执行时解析
内部 locale 请求共享事件 deadline,允许 64 次具名查询、每标识符 256 个 UTF-16 码元与 2 MiB 聚合元数据;重试会恢复 JavaScript 检查点,已提交的会话重放消费记录的元数据而不再调用提供方
picture 函数
| 函数 | 行为 |
|---|---|
Format(picture, value, ...) | 使用 date、time、datetime、num 或 text 子句格式化值;标准复合子句格式化同一个值,可选扩展接受对应的值参数 |
Parse(picture, text) | 把类型化子句、复合子句或备选项解析为 ISO 日期/时间文本、十进制数值文本或移除字面值的文本 |
用 date(de_DE){D. MMMM YYYY} 指定显式 locale,用 num.currency 指定 locale 样式,用竖线表示备选项;带引号字面值与成对撇号保留字面字符
日期、时间与 datetime 样式使用解析出的 default、short、medium、long 或 full 模式;标准 localeSet 数字模式同时为 num.integer 提供 num.decimal 及其整数部分
日期/时间 picture 支持年、月、日、星期名、12/24 小时制、分、秒、小数毫秒、午前午后以及显式 GMT/UTC 偏移;无效日期(如 2 月 30 日)返回空文本
数值 picture 支持强制的 9、可选的 z、空格填充的 Z、小数/分组分隔符、货币符号与 ISO 货币码、百分号、正负号、括号、借贷后缀与隐含小数基点
文本 picture 支持 A 表示 Unicode 字母、O 或 0 表示 Unicode 字母数字、9 表示数字、X 表示 Unicode 码点,包括增补字符
进阶 picture 子句添加数值科学计数与保留小数精度、序数与周年日期、更多时钟、全局字符/空白符号以及复合输入解析
null 参数返回 null;无效 picture、无效值或不可用 locale 返回空文本
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 时使用 locale 默认值,也接受 ISO 日期 |
Num2Date(serial, picture, locale) | 用提供或默认的 locale 日期 picture 格式化序列天数 |
IsoDate2Num(text) | 解析紧凑或带连字符的 ISO 日期,包括可选时间后缀 |
IsoTime2Num(text), Time2Num(text, picture, locale) | 返回自 GMT 午夜起的毫秒数加 1;显式偏移被应用,缺失偏移使用当前时区 |
Num2GMTime(serial, picture, locale), Num2Time(serial, picture, locale) | 以 GMT 或当前时区格式化 1 到 86400000 的时间序列 |
Date(), Time() | 返回当前日期/时间序列,会话重放期间使用记录的时钟输入 |
省略 picture 的 Num2Date 现在产生本地化输出;需要 ISO 输出的调用方请迁移到 Num2Date(serial, "YYYY-MM-DD")
单位、编码与文本工具
| 函数 | 参数与结果 |
|---|---|
UnitType(measurement) | 识别 in、cm、mm、pt、pc 与 mp 别名;无法识别的单位默认英寸 |
UnitValue(measurement, targetUnit="in") | 按每英寸 72 点、每 pica 12 点、每点 1000 毫点换算度量 |
Encode(text, encoding="url"), Decode(text, encoding="url") | 支持 URL 转义、XML 实体与 HTML 具名/数字实体,带 Unicode 标量校验 |
Uuid(style=0) | 返回 32 个十六进制数字或带连字符的样式 1,含版本 4 与变体位;重放使用记录的随机输入 |
WordNum(value, style=0, locale) | 产生英文数字单词、样式 1 的美元金额或样式 2 的美元与美分;无效数值域返回星号 |
当前 picture 边界
替代纪元、表意或全角表示、本地化数字字母表、本地化仅显示模式符号与完整的分组策略仍是独立目标;WordNum 输出英文单词
原生 scalar 求值器保留其既有的 ISO 与财务函数;locale/picture 函数需要通用执行
更底层的 API
TXFALocaleData、HPDFXFALoadLocale、HPDFXFALoadDocumentLocale 与 HPDFXFALocaleJavaScript 暴露 Unicode locale 元数据与安全的引擎序列化
HPDFXFAExecuteJavaScriptEvent 接受 TXFALocaleDataProvider 用于自定义只读元数据查询