Microsoft Word 2016 中的自定义日期格式

0 date-time date-format microsoft-word microsoft-word-2016

我希望能够在 Microsoft Word 中插入不包含在现有格式列表中的日期格式。具体来说,我想要这种格式:

DD ? 月中的第几天,YYYY

G-M*_*ca' 5

我假设您正在谈论 Word 在字段中提供的少数日期值之一。我还将假设您正在通过功能区?/?GUI 插入字段,并且您知道如何执行此操作。好的,当您在“字段”设置窗口中并选择了所需的日期(“创建日期”、(当前)?日期、“打印日期”或“保存日期”)时,单击“字段?代码”。将出现一个“高级字段属性”窗格,其中包含一个“字段?代码:”文本框,该文本框预先填充了您在左侧选择的字段的名称(这只是其全大写的显示名称;例如,“CREATEDATE” 、“日期”等)

\@ "d'th day of' MMMM, yyyy"在该字段名称之后插入;例如,

“高级字段属性”窗格

单击“确定”。

哦,我还假设您想要拼写月份。如果您只需要三个字母的缩写(例如,“Dec”),请使用MMM代替MMMM

不幸的是,你问错了问题。是的,这个问题是在2017年12月5号问的,前一天是4号。但前三天是第1、2、3天(不是第1、2、3天)。第 21、第 22、第 23 和第 31 次也是“第”规则的例外(但反过来,第 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 } }
Run Code Online (Sandbox Code Playgroud)

行号仅用于说明?/?说明目的,而不是文档的一部分?/?代码。这似乎不区分大小写(日期格式除外,其中m是分钟和M月份)。和“直引号”(直引号) 和“卷曲引号”(卷曲引号) 似乎可以互换。

  1. 将日期分配给名为the_date. 将最后一个单词更改为createdate, printdate, 或者savedate 如果这就是您想要的。
  2. 获取天数the_date(例如,“Dec 5”?5)并将其分配给变量day
  3. 获取day(例如,5 ? 0, 17 ? 1, 23 ? 2)的十位数字并将其分配给变量dec
  4. 获取day(例如,5 ? 5, 17 ? 7, 23 ? 3) 的个位并将其分配给变量d10
  5. 为 确定适当的序数后缀day。如果dec是 1,则day在 10 到 19 之间,后缀是“th”。否则,如果d10是 1、2 或 3,则后缀分别为“st”、“nd”或“rd”。对于所有其他值,后缀为“th”。然后将其分配给变量suffix
  6. 构建一个格式字符串,就像我在答案的第一部分中使用的那样。连接上一步中d'的后缀 ( suffix) 和?day?of'?MMMM,?yyyy. 这使用了quote我在Microsoft 社区学到的技巧(使用领域);我不完全明白。
  7. 这基本上是答案第一部分的重复,但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
Run Code Online (Sandbox Code Playgroud)

(在上面,大小写和空格(例如,day / 10vs. day,10)是任意的?/?随机(format字符串除外)。)

  1. 在第一行。
  • 选择date(或createdate,或您使用的任何一个)并按Ctrl+ F9。它将更改为 并可能具有灰色背景。每次按+时都会发生相同的转换,最终看起来像第一个代码块(上面的方式)。不要输入任何花括号!{ date }CtrlF9
  • 接下来,选择整行并按Ctrl+ F9
  1. 在第二行。
  • 选择the_date \@ “d”并按Ctrl+ F9
  • 然后选择整行并按Ctrl+ F9
  1. 在第三行。
  • 选择= int(day / 10)并按Ctrl+ F9
  • 然后选择整行并按Ctrl+ F9
  1. 在第四行。
  • 选择=mod(day,10)并按Ctrl+ F9
  • 然后选择整行并按Ctrl+ F9
  1. 在第五行。
  • 选择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
  1. 在第六行。
  • 选择suffix 并按Ctrl+ F9
  • 然后选择Quote “d'” { suffix } “ day of' MMMM, yyyy” (即从Quote到行尾)并按Ctrl+ F9
  • 然后选择整行并按Ctrl+ F9
  1. 在第七行。
  • 选择format并按Ctrl+ F9
  • 然后选择整行并按Ctrl+ F9

请注意,第 7 行是唯一实际生成任何文本的行;前六个已设置,可以移动到文档开头等位置。您可能希望删除字段之间的分段符,以避免它们占用大量垂直空间。然后选择所有字段(或整个文档,例如,使用Ctrl+ A)并按F9而不是 Ctrl+ F9)。字段(除了最后一个)可能会全部消失。如果是这样,这是正常的,您就完成了。如果它们没有消失,请按Shift+ F9? (再次,不是 Ctrl+ F9),应该这样做。


PS?我在 Word 2013 上检查过这个,这就是屏幕截图的来源。