私はNodaTimeを初めて使いました。私はアプリケーションに実装したいと思います。日付文字列をNodaTimeオブジェクトに解析するには?
日付文字列をNodaTimeオブジェクトに解析するにはどうすればよいですか?
ここで私が現在持っているものです。
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);
私LOCALDATE変数が今2015-11-06T00:00:00Z
である(と私はZが最後の部分で、それはUTCだことが示された、ISO形式で読んだことに基づいて)
私の結果変数は現在2015-11-06T13:00:00 NZ (+13)
ですが、私が正しい経路にいるかどうかはわかりません。
ここに私が本当に欲しいものがあります。 UTCは、その後、その後、long
データ型に変換しよう
- 次の形式でNodaTimeオブジェクトに
dateInput
(日付文字列)に変換dd/MM/yyyy
- そして、それを持っています保存されたデータを取得し、特定のタイムゾーンを使用します。いいえ。
Asia/Hong_Kong
可能でしょうか?
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;
}
私は、ユーザーが入力のみdate
が06/11/2015
は、データベースに保存すると、私はそれが現在の時間です(ユーザの現在の時間)が必要と言うことができ、このスニペットと、このシナリオを持っています視聴目的のために。私がlong
に変換する理由は、Entity Frameworkを使用しているためです。
これはお勧めですか?
あなたの編集に関する質問 - なぜこのシナリオでは日付を入力するのですか?あなたは現在の日付と時刻で注文をタイムスタンプしているようです。 –
@MattJohnsonこれは私が思いついたアイデアです。私はそれが意味をなさないことを認識しています。私はそれを削除する必要があると思う。 –
ええ、ちょうどタイムスタンプしていたら、 'SystemClock.Instance.Now'を使って現在のUTCベースの' Instant'を取得するのと同じように、残りの部分は適用されません。あるいは、あなたのdbに 'DateTime.UtcNow'やそれに類する関数を使用すれば、Noda Timeはまったく必要ありません。 –