Ich bin neu bei NodaTime und möchte es in meiner Anwendung implementieren.Wie analysiere ich Datumszeichenfolge zu einem NodaTime-Objekt?
Wie kann ich Datum Zeichenfolge NodaTime Objekt analysieren?
Hier ist, was ich derzeit habe:
var dateInput = "06/11/2015";
var pattern = InstantPattern.CreateWithInvariantCulture("dd/MM/yyyy");
var parseResult = pattern.Parse(dateInput);
var localDate = parseResult.Value;
DateTimeZone tzNZ = DateTimeZoneProviders.Tzdb["Asia/Hong_Kong"];
ZonedDateTime result = localDate.InZone(tzNZ);
meine LOCALDATE Variable jetzt 2015-11-06T00:00:00Z
ist (und auf dem, was ich in der ISO-Format zu lesen, Z in letzten Teil, darauf hingewiesen, dass es UTC ist)
mein Ergebnis Variable ist jetzt 2015-11-06T13:00:00 NZ (+13)
Aber ich bin nicht sicher, ob ich in dem richtigen Weg bin.
Hier ist, was ich wirklich will.
- umrechnen
dateInput
(Datum string) zu einem NodaTime Objekt mit dem folgenden Formatdd/MM/yyyy
- Und dann haben sie als UTC dann in einen Typ
long
Daten konvertieren dann in die Datenbank speichern - dann versuchen, rufen Sie die gespeicherten Daten ab und verwenden Sie dann eine bestimmte Zeitzone. Sagen Sie
Asia/Hong_Kong
Ist es möglich?
EDIT
var dateInput = "06/11/2015";
var pattern = LocalDatePattern.CreateWithInvariantCulture("dd/MM/yyyy");
LocalDate parseResult = pattern.Parse(dateInput).Value;
DateTimeZone tzHK = DateTimeZoneProviders.Tzdb["Asia/Hong_Kong"];
LocalTime time = GetTimeOfDay();
LocalDateTime localDateTime = parseResult + time;
// change it to UTC then convert it to
// long data type then save it to the database
// methods
private LocalTime GetTimeOfDay()
{
var instant = SystemClock.Instance.Now;
var tz = DateTimeZoneProviders.Tzdb["Asia/Hong_Kong"];
return instant.InZone(tz).TimeOfDay;
}
Ich habe diesen Schnipsel und dieses Szenario, in dem der Benutzer kann nur Eingang date
06/11/2015
sagt dann auf in die Datenbank zu speichern, ich brauche es aktuelle Zeit (aktuelle Zeit des Benutzers) für Betrachtungszwecke. Der Grund, warum ich es in long
umwandeln ist, weil ich Entity Framework verwende.
Ist das ratsam?
Frage zu Ihrer Bearbeitung - Warum sollten Sie in diesem Szenario überhaupt ein Datum eingeben? Das klingt, als würden Sie die Reihenfolge mit dem aktuellen Datum und der aktuellen Uhrzeit stempeln. –
@MattJohnson Dies ist nur eine Idee, die ich kam. und mir ist klar, dass es keinen Sinn ergibt. Ich denke, ich muss es löschen. –
Ja, wenn du nur Timestamping verwendest, dann trifft das alles nicht zu, da du einfach 'SystemClock.Instance.Now' verwenden würdest, um das aktuelle UTC-basierte' Instant' zu erhalten. Oder benutze einfach 'DateTime.UtcNow' oder eine ähnliche Funktion in Deiner Datenbank und dann brauchst du Noda Time überhaupt nicht. –