Я использую TypeConverter
для преобразования DateTime
экземпляров в и из строк.
При использовании зависимых от культуры функций ConvertTo/FromString
кажется, что секунды и миллисекунды DateTime
не 't конвертируется.
При использовании функций, инвариантных к культуре 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
.