Я пытаюсь получить время UTC из зонирования datetime с использованием шаблона LocalDateTime в NodaTime, используя приведенный ниже код.Zoned dateTime to UTC Time - LocalDateTimePattern throws exception
public string getUtcTimeFromZonedTime(string dateTimeString, string timeZoneID,
string dateTimePattern, bool isDateTime)
{
if (string.IsNullOrEmpty(dateTimePattern))
{
if (isDateTime)
{
dateTimePattern = "M/dd/yyyy HH:mm:ss tt";
}
else
{
dateTimePattern = "M/dd/yyyy";
}
}
var pattern = LocalDateTimePattern.CreateWithInvariantCulture(dateTimePattern);
var parseResult = pattern.Parse(dateTimeString);
if (!parseResult.Success)
{
// throw an exception or whatever you want to do
}
var localDateTime = parseResult.Value;
var timeZone = DateTimeZoneProviders.Tzdb[timeZoneID];
// TODO: Consider how you want to handle ambiguous or "skipped" local date/time
// values. For example, you might want InZoneStrictly, or provide your own custom
// handler to InZone.
var zonedDateTime = localDateTime.InZoneLeniently(timeZone);
return zonedDateTime.ToDateTimeUtc().ToString();
}
я получаю исключение при разборе во нижеуказанным scenarios- 1) Если шаблон, как "MM/DD/YYYY HH: MM: SS ТТ" и строка DateTime что-то вроде «5/28/2013 1: 02: ss PM « 2) Если шаблон похож на« MM-dd-yyyy HH: mm: ss tt », а строка DateTime - это что-то вроде« 5/28/2013 1: 02: ss PM »
Для первого случая он будет работать, если я изменю свой рисунок на «M/dd/yyyy HH: mm: ss tt», но в итоге я потеряю начальный ноль. Второй случай будет работать, если я изменю шаблон на «MM/dd/yyyy HH: mm: ss tt»
Есть ли альтернативный способ получения значений UTC или я делаю что-то неправильно здесь.
Да, я исправил свой предыдущий образец, и в настоящее время я использую шаблон «M/dd/yyyy h: mm: ss tt». Я также хотел знать, есть ли другой способ получить UTC из строки datetime, используя NodaTime. – Lakshman
Разбор строки ZonedDateTime с использованием LocalDateTatTatPattern.CreateWithInvariantCulture (dateTimePattern) позволит нам получить значение DateTime во время сервера? – Lakshman
@Lakshman: Нет, это даст вам «LocalDateTime». Чтобы преобразовать это в 'ZonedDateTime', вам нужно указать часовой пояс. Или с 1.2 вы сможете разобрать прямо на 'ZonedDateTime', либо используя зону в значении шаблона, либо с идентификатором зоны в самом тексте. –