Czy ktoś może wyjaśnić różnicę między System.DateTime i System.DateTimeOffset w C# .NET? Który najlepiej nadaje się do tworzenia aplikacji internetowych z użytkownikami z różnych stref czasowych?Różnica między System.DateTime i System.DateTimeOffset
Odpowiedz
Wartość DateTime definiuje konkretną datę i godzinę, zawiera właściwość Kind, która dostarcza ograniczonych informacji o strefie czasowej, do której należy ta data i godzina.
Struktura DateTimeOffset reprezentuje wartość daty i godziny, wraz z przesunięciem wskazującym wartość różną od UTC. W ten sposób wartość zawsze jednoznacznie identyfikuje jeden punkt w czasie.
DateTimeOffset należy uznać za domyślny typ daty i czasu opracowywania aplikacji, ponieważ zastosowania dla wartości DateTimeOffset są znacznie częstsze niż w przypadku wartości DateTime.
Zobacz więcej informacji, przykłady kodu na stronie: http://msdn.microsoft.com/en-us/library/bb384267.aspx
http://msdn.microsoft.com/en-us/library/system.datetime .kind.aspx –
Istnieje kilka kwestii tutaj:
DateTime informacje powinny być zapisane w formacie UTC w bazie danych:
http://www.4guysfromrolla.com/articles/081507-1.aspx
Podczas korzystania z informacji o DateTime w aplikacji internetowej należy przekonwertować go na LocalTime:
DateTime.UtcNow.ToLocalTime();
skonwertuje go na czas lokalny z perspektywy serwera WWW.
Jeśli masz serwer WWW w jednym miejscu, obsługujących klientów w wielu krajach, a następnie trzeba będzie wykonać tę operację w javascript na kliencie samego:
myUTCDate.toLocaleTimeString();
http://www.java2s.com/Code/JavaScript/Date-Time/ConvertDatetoLocaleString.htm
datetimeoffset reprezentuje datetime jako datetime UTC.
Więc
DateTimeOffset dtoNow = DateTimeOffset.Now;
jest taka sama jak
DateTimeOffset dtoUTCNow = DateTimeOffset.UTCNow;
Tutaj dtoNow będzie równa dtoUTCNow chociaż jeden został inicjowany DateTimeOffset.Now a druga została zainicjowana do DateTimeOffset.UTCNow;
A więc DatetimeOffset jest dobry do przechowywania różnicy lub Offset w.r.t UTC.
Aby uzyskać więcej informacji, patrz MSDN.
duplikat http://stackoverflow.com/questions/264617/when-would-you-prefer-datetime-over-datetimeoffset – V4Vendetta