[英]DotNet DateTime.ToString strange results
為什么:
DateTime.Now.ToString("M")
不退還月份號碼? 相反,它返回完整的月份名稱及其上的日期。
顯然,這是因為“M”也是MonthDayPattern的標准代碼。 我不想要這個......我想用“M”來獲取月號。 有沒有辦法把它關掉?
根據MSDN ,您可以使用"%M"
, "M "
或" M"
( 注意 :最后兩個也將包括結果中的空格)以強制M被解析為月份格式的數量。
這里發生的是標准DateTime
格式字符串和自定義格式說明符之間的沖突。 值“M”是不明確的,因為它既是標准格式說明符又是自定義格式說明符。 在發生沖突的情況下, DateTime
實現將在客戶格式化程序上選擇標准格式化程序,因此它在此獲勝。
消除歧義的最簡單方法是在M前加上%char。 此char表示以下內容應解釋為自定義格式化程序
DateTime.Now.ToString("%M");
為什么不使用DateTime.Now.Month
?
您還可以使用System.DateTime.Now.Month.ToString();
完成同樣的事情
您可以在格式中放置一個空字符串文字,使其成為復合格式:
DateTime.Now.ToString("''M")
值得一提的是,使用DateTime.ToString(string)
方法時, 任何單字符格式字符串都需要%前綴,即使該字符串不代表其中一種內置格式字符串模式; 我在嘗試檢索當前小時時遇到了這個問題。 例如,代碼段:
DateTime.Now.ToString("h")
將拋出FormatException
。 將以上內容更改為:
DateTime.Now.ToString("%h")
給出當前日期的小時。
我只能假設該方法正在查看格式字符串的長度並確定它是否代表內置或自定義格式字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.