http://www.blogjava.net/ebecket 返还网
随笔-140  评论-11  文章-131  trackbacks-0

C# Use DateTime.ParseExact() instead of DateTime.Parse()

I didn’t notice this until today, the DateTime I retrieve from my database has the format of yyyy/MM/dd hh:mm:ss.fff

and if I use DateTime.Parse(), the .fff value will be lost.

After searching google, I find out that not only DateTime.Parse() has this one problem, it also has problem with culture setting.

So, whenever you what to parse a DateTime, use DateTime.ParseExact().

Here is an useful example :

string[] DateTimeList = {
"yyyy/M/d tt hh:mm:ss",
"yyyy/MM/dd tt hh:mm:ss",
"yyyy/MM/dd HH:mm:ss",
"yyyy/M/d HH:mm:ss",
"yyyy/M/d",
"yyyy/MM/dd"
}; 
DateTime dt = DateTime.ParseExact(" 2008/  3/18   PM 02: 50:23  ",
DateTimeList,CultureInfo.InvariantCulture,
DateTimeStyles.AllowWhiteSpaces
);

Remember, CultureInfo is important to parsing, for example tt in Chinese will be 上午/下午, in en-US will be AM/PM. You can use CultureInfo.CreateSpecificCulture() to create the culture you need.
A small pattern reference

yyyy year ‘2009′
MM month ‘04′
dd day ‘17′
HH 24 hour ‘23′
hh 12 hour ‘11′
mm minutes ‘59′
ss seconds ‘30′
tt AM/PM
zzz GMT
posted on 2009-11-20 17:00 becket_zheng 阅读(1800) 评论(0)  编辑  收藏 所属分类: C#

只有注册用户登录后才能发表评论。


网站导航: