日期和时间字段
日期和时间字段
本指南展示了如何在 Aspose.Words FOSS for .NET 中使用支持日历的日期和时间字段类 — FieldDate, FieldCreateDate, FieldPrintDate, 并且 FieldSaveDate — 实现了 Word 的 DATE, CREATEDATE, PRINTDATE, 并且 SAVEDATE 字段,分别。每个类派生自 Field 并实现 IFieldWithCalendar; 对于基础 Field 对象模型本身(更新、取消链接、删除以及格式化任何字段),请参阅 使用字段 指南。
四个日期和时间字段类
FieldDate 实现了 DATE 字段。FieldCreateDate 实现了 CREATEDATE,即文档创建的日期。FieldPrintDate 实装了 PRINTDATE,即文档最近打印的日期。FieldSaveDate 实装了 SAVEDATE,即文档最近保存的日期。所有四个类都是 Field 的子类,并实现了 IFieldCodeTokenInfoProvider 和 IFieldWithCalendar,因此它们共享 Field 的 GetFieldCode()、Update()、Unlink()、Remove() 以及格式化(Format)成员,并拥有下面描述的各自日历开关。
选择非公历日历
每个类都公开 UseLunarCalendar(bool)以使用伊斯兰阴历或希伯来阴历渲染结果,UseSakaEraCalendar(bool)用于萨卡纪元日历,UseUmAlQuraCalendar(bool)用于乌姆·阿尔-库拉日历。在调用 Update() 之前,将相应属性设置为 true,即可使字段使用该日历系统重新计算其结果,而不是默认的公历。
FieldDate 的应用格式开关
FieldDate 另外公开了 UseLastFormat(bool),它控制在插入新的 DATE 字段时,字段是否使用宿主应用程序上一次使用的格式。FieldCreateDate、FieldPrintDate 和 FieldSaveDate 不公开此属性。
技巧与最佳实践
- 设置日历开关(
UseLunarCalendar、UseSakaEraCalendar或UseUmAlQuraCalendar),然后在字段上调用Update()—— 仅更改属性本身不会重新计算Result。 - 在给定的字段实例上只能将一个日历开关设置为
true;组合多个开关会产生歧义的结果。 - 使用
Field.Format(aFieldFormat,在 字段结果格式化 指南) 与这些日历开关一起使用,以控制应用于结果的数字或日期/时间格式化模式。 - 选择与您所需语义匹配的类 ——
FieldSaveDate和FieldPrintDate读取文档中记录的时间戳,而FieldDate则反映字段被更新的日期。
常见问题
| 问题 | 原因 | 修复 |
|---|---|---|
| 日历切换对显示结果没有影响 | 属性设置后字段未重新计算 | 在设置 UseLunarCalendar、UseSakaEraCalendar 或 UseUmAlQuraCalendar 后,对字段实例调用 Update() |
UseLastFormat 在 FieldPrintDate 或 FieldSaveDate 上无法编译 | 该属性仅在 FieldDate 上存在 | 使用 FieldDate 实现 application-format-follows 行为,或在其他类上显式设置 Format |
| 结果显示错误的日历系统 | 同一字段上有多个日历开关被设置为 true | 每个字段实例只能设置 UseLunarCalendar、UseSakaEraCalendar、UseUmAlQuraCalendar 中的一个 |
FAQ
FieldDate和FieldCreateDate有什么区别?
FieldDate实现了DATE字段(每次更新时重新计算为当前日期);FieldCreateDate实现了CREATEDATE(文档创建的日期)。
如何让日期字段使用伊斯兰阴历?
在FieldDate、FieldCreateDate、FieldPrintDate或FieldSaveDate实例上设置UseLunarCalendar = true,然后调用Update()。
四个类中哪一个跟踪文档最后一次保存的时间?
FieldSaveDate,实现了SAVEDATE字段。
这些类是否支持自定义格式化图片,而不仅仅是日历切换?
是的 — 每个都公开一个 Format 属性 (FieldFormat) 继承自基础字段基础设施;请参阅 字段结果格式化 指南 NumericFormat and DateTimeFormat.
API Reference 摘要
| 类/方法 | 描述 |
|---|---|
FieldDate | 实现 DATE 字段 |
FieldCreateDate | 实现 CREATEDATE 字段 |
FieldPrintDate | 实现 PRINTDATE 字段 |
FieldSaveDate | 实现 SAVEDATE 字段 |
UseLunarCalendar | 使用 Hijri Lunar 或 Hebrew Lunar 日历渲染结果 |
UseSakaEraCalendar | 使用 Saka Era 日历渲染结果 |
UseUmAlQuraCalendar | 使用 Um-al-Qura 日历渲染结果 |
FieldDate.UseLastFormat | 使用托管应用程序上次使用的格式来创建新的 DATE 字段 |
IFieldWithCalendar | 所有四个类实现的用于日历感知字段结果的接口 |