Я новичок в 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
данных затем сохранить его в базу данных - Затем попытайтесь извлекать сохраненные данные, а затем использовать определенный часовой пояс. Say
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 Это просто идея, которую я придумал. и я просто понимаю, что это не имеет никакого смысла. Я думаю, мне нужно удалить его. –
Да, если бы вы были просто timestamping, то ничего из этого не касается, поскольку вы просто используете 'SystemClock.Instance.Now', чтобы получить текущий« Мгновенный »UTC. Или просто используйте 'DateTime.UtcNow' или подобную функцию в вашем db, а затем вам не понадобится Noda Time. –