Итак, у меня есть веб-сервер, размещенный в центральном стандартном часовом поясе. Сервер IIS настроен на это как Часовой пояс, поэтому всякий раз, когда вы используете DateTime.Now на сервере или создаете новую DateTime, где тип Local, он находится в центральном времени.Конвертировать DateTime с определенного часового пояса в UTC с помощью Nodatime?
Проблема в том, что сайт является (меж) национальной заявкой, и я мог бы иметь клиентов в любой точке США или Канады. Одна из вещей, которые имеет сайт, - это «Планировщик» для планирования назначений. Мы решили упростить разработку для хранения всех значений DateTime в базе данных в формате UTC и что весь трафик в API и из него также находится в UTC. Проблема в том, что я часто сталкиваюсь с проблемами при создании значений даты/времени на стороне сервера.
Скажем, например, мне нужно программно создать встречу для клиента в Тихом океане Стандартного часового пояса на сервере в течение 8 часов. В прошлом, я сделал что-то вроде этого:
var appointment = new new DateTime(2015, 04, 17, 08, 00, 00, DateTimeKind.Unspecified)
var utcAppointment = TimeZoneInfo.ConvertTimeToUtc(appointment,
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"))
Я много других манипуляций даты/времени, а также в рамках моей программы и имею в виду только собирается Nodatime вместо этого. Я знаю, что довольно легко получить UTC DateTime из переменной Nodatime. Я смущен, как создать переменную Nodatime для определенного часового пояса в определенную дату/время? Все примеры, которые я вижу, связаны с шаблонами и чтением строк или созданием Мгновенного момента, который по существу «сейчас». Я хочу сделать что-то вроде существующего объекта BCL DateTime, независимо от «Kind», и преобразовать его в объект Nodatime с определенным часовым поясом, который я установил.
Я думаю, что Nodatime - отличная библиотека, но чтение userguide просто заставило меня почесывать голову о преобразовании в BCL и из него.
Я спросил что-то подобное [здесь] (http://stackoverflow.com/q/7553997/397817), но это не был изначально вопрос NodaTime. Дискуссия может быть полезной для будущих читателей этого вопроса. Кроме того, я могу предложить второе предложение Джона Скита использовать типы NodaTime в веб-API, если это необходимо, например. LocalTime для временной части вашего расписания - есть даже вспомогательная библиотека для сериализации, NodaTime.Serialization.JsonNet. –