2016-08-09 47 views
0

Ich verwende sowohl die native Datetime- als auch die Noda Time-Bibliothek LocalDate im Projekt. Das LocalDate wird hauptsächlich zur Berechnung verwendet, während Datetime in den übrigen Orten verwendet wird.Beste Art, zwischen noda Zeit LocalDate und Datetime zu konvertieren?

Kann mir bitte jemand einen einfachen Weg geben zwischen den nativen und nodatime Datumsfeldern zu konvertieren?

Ich verwende derzeit den folgenden Ansatz, um das Datetime-Feld zu Noda LocalDate zu konvertieren.

LocalDate endDate = new LocalDate(startDate.Year, startDate.Month, startDate.Day); 

Antwort

2

Die Entwickler von NodaTime API haben keine Umwandlung DateTime-LocalDate ausgesetzt. Sie können jedoch eine Erweiterungsmethode selbst und verwenden Sie es überall als Abkürzung erstellen:

public static class MyExtensions 
{ 
    public static LocalDate ToLocalDate(this DateTime dateTime) 
    { 
     return new LocalDate(dateTime.Year, dateTime.Month, dateTime.Day); 
    } 
} 

Verbrauch:

LocalDate localDate = startDate.ToLocalDate(); 
9

Der einfachste Ansatz wäre es, die DateTime zu einem LocalDateTime zu konvertieren und nehmen Sie die Date Teil :

var date = LocalDateTime.FromDateTime(dateTime).Date; 

ich, dass effizienter zu sein erwarten würde von Jahr, Monat und Tag vonals der Erhalt. (Unabhängig davon, ob das für Sie bedeutsam ist, ist eine andere Sache.)

In Noda Time 2.0 gibt es eine Erweiterungsmethode auf DateTime so können Sie verwenden:

using static NodaTime.Extensions.DateTimeExtensions; 
... 
var date = dateTime.ToLocalDateTime().Date; 

Für die entgegengesetzte Richtung, ich würde wieder gehen Sie über LocalDateTime:

var dateTime = date.AtMidnight().ToDateTimeUnspecified(); 
+1

Wie kann ich die Zeitkomponente von der 'LocalDateTime' bekommen ?. Ich habe eine LocalDateTime als 'var dateTime = new LocalDateTime (2017, 8, 01, 22, 30, 00) erstellt;' Wenn ich Ihrem Ansatz folge, kann ich das Datum allein und nicht die Zeit abrufen. – Karthik

+1

@Karthik: Verwenden Sie die Eigenschaft 'TimeOfDay', um die' LocalTime' zu ​​erhalten. –