2013-08-12 4 views
3

Я пытаюсь создать ввод даты в приложении AngularJS и у вас возникли проблемы с форматированием даты. Я создал plnkr, чтобы проиллюстрировать мою проблему: http://plnkr.co/edit/LbQIPG?p=previewугловой форматирование ввода даты js

Моя проблема в том, что независимо от формата даты, который я получаю с SQL Server (я поставил две даты выборки в plnkr 2013-07-11T00: 00: 00.000 и 2013-07-11), объект Date Javascript применяет код часового пояса и влияет на отображение моей даты в поле ввода, показывая 07/10/2013 вместо правильной даты 7/11/2013. Я просто хочу, чтобы дата была фактически возвращена из базы данных, я не хочу, чтобы часовой пояс был применен вообще, только дата имеет отношение ко мне, а не время. Нужно ли мне создавать настраиваемую директиву для точного отображения даты, которую я хочу, получая время даты ISO, а затем назначая эту строку даты для ввода? Или есть лучшее решение. Вот пример кода, я думаю, что я, возможно, придется использовать, чтобы отформатировать дату в директиве:

var newDate = $scope.dataBaseData.myDate.toISOString(); 
newDate = new Date(newDate); 
$scope.dataBaseData.myDate= new Date((newDate.getUTCMonth() +1) + "/" +newDate.getUTCDate() + "/" + newDate.getUTCFullYear()); 
+0

Необходимо, чтобы ваш SQL-сервер отправил обратно строки, содержащие часовой пояс --- и для удобства, БД должна хранить все даты в формате UTC. У Javascript и угловых есть много возможностей для отображения этих дат в желаемом формате + часовой пояс. – teu

ответ

0

Angularjs использует ISO8601 спецификации времени и даты. Вам нужно сдвинуть часовой пояс, если вы хотите, чтобы JavaScript правильно разбирал строку ISO8601.

Однако, если вы создаете объект Date, как этот

$scope.thing1 = new Date(2013, 6, 11); (month is 0 based.) 

Это сбрасывали в Thu Jul 11 2013 00:00:00 GMT-0400 (Eastern Daylight Time) в консоли.

Объект даты автоматически выбирает часовой пояс, и он будет отображаться правильно, чтобы быть 07/11/2013.

+0

Спасибо за ваш ответ, я считаю, что день фактически основан на 1, и только месяц основан на нулевом значении. Но этот ответ по сути является тем же самым решением, которое я предложил в нижней части моего сообщения. Я извлекаю каждый из объектов даты с даты и переназначаю объект даты области так же, как и вы. – mvargos

+0

@mvargos Спасибо. Дело в том, что если вы можете заставить свой API возвращать даты в формате UTC, для пользовательского интерфейса будет намного проще управлять. – zsong

Смежные вопросы