我使用TypeConverter
将DateTime
个实例转换为字符串。
使用文化相关函数ConvertTo/FromString
时,似乎DateTime
的秒和毫秒部分不会被转换。
使用文化不变函数ConvertTo/FromInvariantString
时,仍然缺少毫秒数。无论哪种方式,转换之前和之后的两个DateTime
实例永远不会相同,正如我所期望的那样。
此课程演示了效果:
using System;
using System.ComponentModel;
public class DateToStringConversionTest
{
public static void Main()
{
TypeConverter tc = TypeDescriptor.GetConverter(typeof(DateTime));
DateTime d1 = new DateTime( 2010, 1, 2, 3, 4, 5, 6 );
// convert to / from invariant string
string s3 = tc.ConvertToInvariantString(d1);
DateTime d3 = (DateTime) tc.ConvertFromInvariantString(s3);
Console.WriteLine( "invariant string\n {0}\n=> {1}\n=> {2}\n=> equals? {3}",
d1, s3, d3, d1.Equals(d3) );
// convert to / from string
string s2 = tc.ConvertToString(d1);
DateTime d2 = (DateTime) tc.ConvertFromString(s2);
Console.WriteLine( "\nstring\n {0}\n=> {1}\n=> {2}\n=> equals? {3}",
d1, s2, d2, d1.Equals(d2) );
}
}
这是输出:
string
02.01.2010 03:04:05 => 02.01.2010 03:04 => 02.01.2010 03:04:00 => equals? False
invariant string
02.01.2010 03:04:05 => 01/02/2010 03:04:05 => 02.01.2010 03:04:05 => equals? False
我正在使用德语区域设置,因此日期输出为DD.MM.YYYY
。
答案 0 :(得分:0)
我通常使用不会缩短毫秒的DateTime.Parse/TryParse
和DateTime.ToString()
。我不明白为什么这对你不起作用。