2010-11-14 150 views
1

当我使用TypeConverterDateTime实例转换到与字符串。C#的TypeConverter禁止显示(毫)秒转换日期时间

使用文化依赖函数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

我通常使用DateTime.Parse/TryParseDateTime.ToString()不削减毫秒。我不明白为什么这不适合你。

+0

同样的问题在这里:d1.Equals(DateTime.Parse(d1.ToString()))返回False – miasbeck 2010-11-14 10:01:36

+0

我不知道呢。 – Femaref 2010-11-14 10:04:27