2015-04-30 6 views
1

Я не хочу, чтобы ветер указывал на информацию о часовом поясе на сервере или на клиенте. Как отключить это?Остановить ветерок от добавления часового пояса

У меня есть поле SQL DATE в базе данных - я не хочу времени. При работе с переменными DateTime в C# я всегда хочу, чтобы они были установлены в полночь. Я переопределяю breeze.DataType.parseDateFromServer на клиенте, как описано здесь https://stackoverflow.com/a/17669486/2107571, но я, похоже, все еще получаю настройку на сервере.

ответ

0

Ключевым моментом здесь является то, что ветерок НЕ относится к информации о времени и часовом поясе. Проблема в том, что даты автоматически сериализуются с помощью компонента времени, потому что в javascript все даты имеют компонент времени. Поэтому, даже если эта информация настроена на все нули, она все равно будет интерпретироваться на клиенте как дата с компонентом времени.

Вторая проблема заключается в том, что практически каждый браузер форматирует даты в соответствии с настройками часового пояса браузера.

Таким образом, проблема заключается либо в том, что часовой пояс сервера отличается от часового пояса клиента, либо дата сервера сериализуется без информации о часовом поясе (которая будет интерпретироваться ветром как дата UTC с нулевым смещением. т.е. это вряд ли соответствует вашему местному часовому поясу.) Это происходит в .NET с датами сервера, объявленными как DateTime, в отличие от DateTime2 или DateTimeOffset.

Чтобы исправить любой из них вы должны будете заменить DataType.parseDateFromServer Breeze, так что вы полностью игнорировать информацию о часовом поясе идет в

Что-то вроде:.

breeze.DataType.parseDateFromServer = function (source) { 
    source = stripTime(source); // you will need to write the stripTime method. 
    return new Date(Date.parse(source)); 
}; 

Если вы используете Moment.js, я думаю, что вы можете сделать следующее:

breeze.DataType.parseDateFromServer = function (source) { 
    var date = moment(source); 
    return date.toDate(); 
}; 
Смежные вопросы