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 阅读(1829)
评论(0) 编辑 收藏 所属分类:
C#