我希望能够在 Microsoft Word 中插入现有格式列表中未包含的日期格式。具体来说,我想要这种格式:
直接差分 日月,YYYY
答案1
我假设您正在谈论 Word 在字段中提供的少数日期值之一。我还假设您正在通过功能区/ GUI 插入字段,并且您知道如何执行此操作。好的,当您在“字段”设置窗口中,并且您已选择所需的日期(“创建日期”,(当前)日期,“打印日期”或“保存日期”)时,单击“字段代码”。将出现一个“高级字段属性”窗格,其中的“字段代码:”文本框已预先填充了您在左侧选择的字段的名称(即其全大写的显示名称;例如,“CREATEDATE”,“DATE”等)。
\@ "d'th day of' MMMM, yyyy"
在该字段名称后插入;例如,
单击“确定”。
哦,我还假设您希望拼写出月份。如果您只想要三个字母的缩写(例如“Dec”),请使用MMM
而不是MMMM
。
不幸的是,你问错了问题。是的,这个问题是在 2017 年 12 月 5 日提出的,前一天是 4 日。但前三天分别是 1 日、2 日和 3 日(不是第 1、2 和 3)。第 21、22、23 和 31 也是“th”规则的例外(但奇怪的是,第 11、12 和 13 不是例外)。以下字段序列将生成正确的英语序数词:
(1) { set the_date { date } }
(2) { Set day { the_date \@ “d” } }
(3) { Set dec { = int(day / 10) } }
(4) { Set d10 { =mod(day,10) } }
(5) { Set suffix { If dec = 1 “th” { If d10 = 1 “st” { If d10 = 2 “nd” { If d10 = 3 “rd” “th” } } } } }
(6) { Set format { Quote “d'” { suffix } “ day of' MMMM, yyyy” } }
(7) { The_Date \@ { format } }
行号仅用于说明/展示目的,不是文档/代码的一部分。这似乎不区分大小写(日期格式除外,其中m
是分钟,M
是月份)。并且“直引号”()和“花括号”() 似乎可以互换。
- 将日期赋给名为 的变量(技术上称为“书签”) 。 如果您愿意,可以
the_date
将最后一个单词更改为createdate
、printdate
或。savedate
- 获取日期数
the_date
(例如“12 月 5 日”→5)并将其分配给变量day
。 - 获取的十位数字
day
(例如,5→0、17→1、23→2)并将其赋给变量dec
。 - 获取的个位数
day
(例如,5→5、17→7、23→3)并将其赋给变量d10
。 - 确定 的适当序数后缀
day
。如果dec
为 1,则day
介于 10 和 19 之间,后缀为“th”。否则,如果d10
为 1、2 或 3,则后缀分别为“st”、“nd”或“rd”。对于所有其他值,后缀为“th”。然后将其分配给变量suffix
。 - 构建一个格式字符串,就像我在答案的第一部分中使用的一样。连接、上一步中的
d'
后缀 ( ) 和 。这使用了我在 学到的一个技巧(使用字段)suffix
day of' MMMM, yyyy
quote
微软社区;我不完全明白。 - 这基本上是答案第一部分的重复,但
the_date
根据格式显示format
。
要使用此功能,请复制以下内容并将其粘贴到您的 Word 文档中:
set the_date date
Set day the_date \@ "d"
Set dec = int(day / 10)
Set d10 =mod(day,10)
Set suffix If dec = 1 “th” If d10 = 1 “st” If d10 = 2 “nd” If d10 = 3 “rd” “th”
Set format Quote “d'” suffix “ day of' MMMM, yyyy”
The_Date \@ format
(在上面,大写和间距(例如,day / 10
vs. day,10
)是任意/随机的(字符串除外format
)。)
- 在第一行。
- 选择
date
(或createdate
,或您使用的任何一个)并按Ctrl+ F9。它将变为 并且可能具有灰色背景。每次按+时都会发生相同的变换,最终看起来像第一个代码块(远在上面)。不要输入任何花括号!{ date }
CtrlF9 - 接下来,选择整行并按Ctrl+ F9。
- 在第二行。
- 选择
the_date \@ “d”
并按Ctrl+ F9。 - 然后选择整行并按Ctrl+ F9。
- 在第三行。
- 选择
= int(day / 10)
并按Ctrl+ F9。 - 然后选择整行并按Ctrl+ F9。
- 在第四行。
- 选择
=mod(day,10)
并按Ctrl+ F9。 - 然后选择整行并按Ctrl+ F9。
- 在第五行。
- 选择
If d10 = 3 “rd” “th”
(在行尾)并按Ctrl+ F9。 - 然后选择
If d10 = 2 “nd” { If d10 = 3 “rd” “th” }
并按Ctrl+ F9。 - 然后选择
If d10 = 1 “st” { If d10 = 2 “nd” { If d10 = 3 “rd” “th” } }
并按Ctrl+ F9。 - 然后选择
If dec = 1 “th” { If d10 = 1 “st” { If d10 = 2 “nd” { If d10 = 3 “rd” “th” } } }
并按Ctrl+ F9。 - 然后选择整行并按Ctrl+ F9。
- 在第六行。
- 选择
suffix
并按Ctrl+ F9。 - 然后选择
Quote “d'” { suffix } “ day of' MMMM, yyyy”
(即从Quote
到行尾)并按Ctrl+ F9。 - 然后选择整行并按Ctrl+ F9。
- 在第七行。
- 选择
format
并按Ctrl+ F9。 - 然后选择整行并按Ctrl+ F9。
请注意,第 7 行是唯一实际生成文本的行;前六行是设置好的,可以移动到某个位置,例如文档的开头。您可能希望删除字段之间的段落分隔符,以避免它们占用大量垂直空间。然后选择所有字段(或整个文档,例如使用Ctrl+ A)并按F9(不是 Ctrl+ F9)。所有字段(最后一个字段除外)可能都会消失。如果是这样,这是正常的,您就完成了。如果它们没有消失,请按Shift+ F9 (再次,不是 Ctrl+ F9),这样就可以了。
PS:我在 Word 2013 上检查了这一点,屏幕截图就是从那里来的。