日期格式化的“疑难杂症”
今天在解決一個時間格式化的問題時發(fā)現(xiàn)一個奇怪的問題:
當本機系統(tǒng)時間設(shè)置為“2014-09-16”這種格式時,如果想將DateTime.Now轉(zhuǎn)換成“2014/09/16”這樣的格式時始終不能成功,設(shè)置格式為DateTime.Now.ToString("yyyy/MM/dd") ,輸出的結(jié)果是依然是“2014-06-19”這樣的形式。但是如果反過來系統(tǒng)時間是“2014/09/16”這樣的格式,轉(zhuǎn)換成任何時間格式都可以。各種百度找到原因:在某些語言(如 C#)中,“\”字符在與 ToString 方法共用時,它前面必須有轉(zhuǎn)義符。
解決辦法:
①啟用 DateTime.ToString() 的第二個參數(shù),忽略系統(tǒng)時間格式設(shè)置:
DateTime.Now.ToString("yyyy/MM/dd",
System.Globalization.DateTimeFormatInfo.InvariantInfo);
②使用"yyyy'/'MM'/'dd",防止 /M and /d 字符轉(zhuǎn)義;
③使用DateTime.Now.ToString(@"yyyy\/MM\/dd");,同樣是為了取消轉(zhuǎn)義字符。
另:
Asp.net2.0中,GridView日期列使用DataFormatString="{0:yyyy-MM-dd}",輸出沒有任何變化,還是默認的“2008-6-19”這樣的形式。解決辦法:同時設(shè)置屬性:HtmlEncode="False"
轉(zhuǎn)載于:https://www.cnblogs.com/wwfjcy479/p/3975090.html
總結(jié)
以上是生活随笔為你收集整理的日期格式化的“疑难杂症”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SPL
- 下一篇: linux PHP 编译安装参数详解