我正在尝试在AngularJS应用中创建日期输入,并且无法格式化日期。我创建了一个plnkr来说明我的问题:http://plnkr.co/edit/LbQIPG?p=preview
我的问题是,无论我从SQL Server收到的日期格式(我在plnkr 2013-07-11T00:00:00.000和2013-07-11中放置两个样本日期),Javascript Date对象正在应用时区代码,并通过显示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 :(得分: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。