JS Date секунд дает другую дату в C # - PullRequest
0 голосов
/ 03 мая 2018

Я разрабатываю небольшую электронную коммерцию, в которой главный сервер клиента отправляет Date в качестве параметра GET в секундах. Исходя из этого, я должен проверить, не превышает ли Date минут от них 20 минут в текущем DateTime.

Пока проблема в том, что C# DateTime всегда 3 часа до того, как Date отправит с их сервера.

Если я сделаю new Date(2018, 4, 3, 12, 25, 00).getTime() / 1000 (чтобы получить секунды из эпохи) и передам его моему DateTime на стороне сервера Я всегда получу за 3 часа до , поэтому в этом примере я получение 03-05-2018 09:25:00

И вот как я анализирую Date на сервере

DateTime sDt = (new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Local))
  .AddSeconds(double.Parse(sessionDs.Tables[0].Rows[0]["DT"].ToString()));

Где значение DataColumn является секундами от JS Date

Почему это? Чего мне не хватает?

1 Ответ

0 голосов
/ 03 мая 2018

Javascript Date.getTime использует UTC, поскольку документация гласит:

Метод getTime () возвращает числовое значение, соответствующее время на указанную дату по универсальному времени.

Так что вы должны настроить свой код C # следующим образом:

DateTime sDt = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc) // <
    .AddSeconds(yourJsNumber).ToLocalTime();

Если вам не нужна дата в местном часовом поясе, вы можете опустить ToLocalTime и работать с ней в UTC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...