我是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
(基於我在ISO格式讀取,具有Z在最後部分指出,這是UTC)
我的結果變量現在是2015-11-06T13:00:00 NZ (+13)
但我不確定我是否在正確的道路上。
這是我真正想要的。
- 轉換的
dateInput
(日期字符串)的NodaTime對象以下格式dd/MM/yyyy
- 然後把它作爲UTC然後轉換爲
long
數據類型,然後將其保存到數據庫中 - 然後嘗試檢索保存的數據,然後使用特定的時區。說
Asia/Hong_Kong
這可能嗎?
編輯
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
的原因是因爲我正在使用實體框架。
這是可取的嗎?
編輯問題 - 爲什麼你會讓他們在這種情況下輸入日期?這聽起來像是用當前的日期和時間對訂單進行時間戳。 –
@MattJohnson這只是一個想法,我想出了。我只是意識到它沒有任何意義。我想我需要刪除它。 –
是的,如果你只是時間戳,那麼其餘的都不適用,因爲你只是使用'SystemClock.Instance.Now'來獲取當前基於UTC的'Instant'。或者在數據庫中使用'DateTime.UtcNow'或類似的函數,然後根本就不需要Noda Time。 –