[英]Format a DateTime using a Microsoft Word date picker content control format string
Microsoft Word的日期選擇器內容控件(可以通過默認隱藏的Developer功能區添加到文檔中)使用與DateTime.ToString稍有不兼容的日期/時間格式字符串。 例如:
如果我在DateTime.ToString中使用相同的格式:
DateTime.Parse("11/13/2014 12:00 PM").ToString("M/d/yyyy h:mm am/pm")
結果為“ 11/13/2014 12:00 a0 / p0”。 Word會顯示預期的結果,“ 2014/11/13 12:00 PM”(是的,PM以大寫形式顯示)。
有沒有安全的方法來使用從Word內容控件中提取的日期格式來格式化C#中的日期?
沒有am
或pm
作為自定義日期和時間格式說明符。
您需要使用"tt"
自定義格式說明符 ,該說明符表示CurrentCulture
的整個AM
/ PM
指示符。
DateTime.Parse("11/13/2014 12:00 PM").ToString("M/d/yyyy h:mm tt")
您的程序將a
和p
字符視為文字字符串定界符,而m
指定符僅持續數分鍾。 由於DateTime
單位數字分鍾為0
,因此您的am / pm
將為a0 / p0
記住, "/"
自定義格式說明符的特殊含義是用當前區域性或提供的區域性日期分隔符代替我 。 這意味着,如果CurrentCulture
的DateSeparator
不是/
,則結果將具有當前的日期分隔符,而不是/
。
如果您只想將Word日期內容控件的值設置為日期,請遵循其格式:
DateTime dt = ...;
ContentControl contentControl = ...;
contentControl.Range.Text = ""; // ensure Word reformats date
contentControl.Range.Text = dt.ToString();
設置內容控件文本屬性就像是作為用戶在內容控件中鍵入一個值。 當您在內容控件中鍵入日期時,Word會對其進行解析並重新格式化,或者在無法解析時顯示給定的文本。
當分配的日期與控件中已經存在的日期相同時, .Text = ""
阻止Word使用.ToString()給定的格式。 我發現,當日期選擇器內容控件映射到自定義XML值時,如果更改日期,Word將對其重新格式化,但是如果更改日期格式(例如,將“ 2月”更改為“ 2月”,甚至更改從“星期二”到“星期六”),Word將保留我的格式。 通過先清除內容控件文本,Word會將日期分配視為值更改,從而重新格式化日期。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.