请谨慎使用DateTime.ToString()
程序出错了,原来插入的日期为"2003-9-1 实验室11:45:00"。晕倒!怎么多了三个汉字了。原来那台机器被个性化了!
原来,在我的程序中,是使用的是DateTime.ToString()。马上更改了:System.DateTime.Now.ToString("yyyy-M-d HH:mm:ss")。程序编译中,分发中……
ps:
Console.WriteLine(System.DateTime.Now.ToString());
Console.WriteLine(System.DateTime.Now.ToString("yyyy-M-d HH:mm:ss"));
在redhat8.0的执行结果
[root@ec-server tmp]# mono DateTimeFormat.exe
09/01/2003 11:57:37
2003-9-1 11:57:37
问题点数:1、回复次数:8Top
1 楼qimini(循序渐进)回复于 2003-09-01 12:10:12 得分 0
好贴 upTop
2 楼sarmoo(Echo)回复于 2003-09-01 12:39:54 得分 0
It's useful! Thanks!Top
3 楼czy412(我想飞!但我没翅膀,唉!)回复于 2003-09-01 12:46:32 得分 0
早就知道拉,早在VB6里面就有这个问题,是微软的BUG!Top
4 楼zhouzhouzhou(人生程序)回复于 2003-09-01 13:49:32 得分 0
那也能說是BUG,DateTime.ToString()直接得到系統時間,
而時間轉化時,有字符串格式。Top
5 楼nehc(青义居士)回复于 2003-09-01 14:55:01 得分 0
不能够说是ms的bug。ms又没有保证tostring能够得到一样的内容。Top
6 楼hehaorome(石沉大海)回复于 2003-09-01 15:19:06 得分 0
Up!Top
7 楼xixigongzhu(夕夕公主(※快乐在于自己※))回复于 2003-09-01 17:15:19 得分 1
在调用ToString的时候,用的是系统默认的Culture(语言风格)和默认的格式"G",而G又取决于默认Culture的DateTimeFormatInfo的属性ShortDatePattern和LongTimePattern,如果用户在控制版面将这两种格式改了,ToString()的时候也会随之改了。
所以这绝对不是微软的bug,相反微软为了ToString与系统设置一致而采用了系统默认的格式。
如果用户不想用默认设置的话,这样就可以了:
String str = dt.ToString(CultureInfo.InvariantCulture.DateTimeFormat);Top
8 楼zhpsam109(JACKY.昊昊)回复于 2003-09-01 17:19:12 得分 0
学习!Top



