Мой сервер находится в часовом поясе UTC, а моя локальная система находится в другом часовом поясе.У меня есть объект datetime, указывающий на первую секунду определенной даты, скажем, 7 января 2018 года, то есть 07-01-2019 00:00:00
.Если я вызываю метод toString ("dd MMM yyyy") для этого объекта и возвращаю его в мою локальную систему и отображаю его, я вижу, что дата выключена на день, показывая 6 января 2019 года. Не могли бы вы объяснить, почему это может бытьтак?
РЕДАКТИРОВАТЬ: Первоначально я хотел задать вопрос, чтобы знать, если метод dateTime.ToString () имеет какие-либо заметные проблемы.Может ли кто-нибудь объяснить мне, почему это так?
Мое тестирование проблемы показало, что ошибка воспроизводима только тогда, когда сервер, на котором размещена веб-страница, и клиент, взаимодействующий с веб-страницей, находятся в разных часовых поясах.Мой клиент в IST, а сервер в UTC.Предположим, я выбрал 29 января 2019 г. и 7 февраля 2019 г. в качестве даты начала и окончания соответственно.
Клиентская сторона отправляет в API в качестве параметров следующие параметры.При переключении на разные часовые пояса я заметил, что отправленные параметры находятся только в UTC.
fromDate: "2019-01-28T18:30:00.000Z"
toDate: "2019-02-06T18:30:00.000Z"
API принимает их и выполняет следующие действия:
{
DateTime utcStart = DateTime.SpecifyKind(Convert.ToDateTime(fromDate),
DateTimeKind.Unspecified);
DateTime utcEnd = DateTime.SpecifyKind(Convert.ToDateTime(toDate),
DateTimeKind.Unspecified);
dummyMethod(utcStart,utcEnd,true, null, out strDuration);
}
dummyMethod(DateTime? fromDate, DateTime? toDate, Boolean convertToUTC, int? timeZoneKey, out string displayString)
{
DateTime centerStartDate = GetCurrentTime(timeZoneKey).Date;
DateTime centerEndDate = GetCurrentTime(timeZoneKey).Date;
if (fromDate.HasValue)
centerStartDate = fromDate.Value.Date;
if (toDate.HasValue)
centerEndDate = toDate.Value.Date;
displayString = centerStartDate.ToString("dd MMM yyyy") + " - " + centerEndDate.ToString("dd MMM yyyy");
}
displayString напрямую возвращается через JSON, а displayString - то, где кажется, что что-то идет не так.
TIA