转换DateTime时,C#TypeConverter会抑制(毫秒)秒

时间:2010-11-14 09:50:40

标签: c# .net-3.5 type-conversion typeconverter

我使用TypeConverterDateTime个实例转换为字符串。

使用文化相关函数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

1 个答案:

答案 0 :(得分:0)

我通常使用不会缩短毫秒的DateTime.Parse/TryParseDateTime.ToString()。我不明白为什么这对你不起作用。