Javascript 日期输入格式

Javascript 日期输入格式,javascript,date,datetime,angularjs,angularjs-directive,Javascript,Date,Datetime,Angularjs,Angularjs Directive,我正在尝试在AngularJS应用程序中创建日期输入,但设置日期格式时遇到问题。我创建了一个plnkr来说明我的问题: 我的问题是,无论我从SQL Server收到的日期格式是什么(我在plnkr 2013-07-11T00:00:00.000和2013-07-11中输入了两个示例日期),Javascript日期对象都会应用时区代码,并通过显示2013年10月7日而不是2013年11月7日的正确日期来影响我在输入字段中的日期显示。我只想要从数据库中实际返回的日期,我根本不想应用时区,只有日期与我

我正在尝试在AngularJS应用程序中创建日期输入,但设置日期格式时遇到问题。我创建了一个plnkr来说明我的问题:

我的问题是,无论我从SQL Server收到的日期格式是什么(我在plnkr 2013-07-11T00:00:00.000和2013-07-11中输入了两个示例日期),Javascript日期对象都会应用时区代码,并通过显示2013年10月7日而不是2013年11月7日的正确日期来影响我在输入字段中的日期显示。我只想要从数据库中实际返回的日期,我根本不想应用时区,只有日期与我相关,而不是时间。我是否需要创建一个自定义指令,通过获取ISO日期时间,然后将该日期字符串指定给我的输入来准确显示我想要的日期?还是有更好的解决办法。以下是我认为可能需要用于在指令中设置日期格式的代码示例:

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

Angularjs对日期和时间使用ISO8601规范。如果希望JavaScript正确解析ISO8601字符串,则需要移动时区

但是,如果像这样创建日期对象

$scope.thing1 = new Date(2013, 6, 11);  (month is 0 based.)
此文件在控制台中转储为2013年7月11日星期四00:00:00 GMT-0400(东部夏时制)


date对象自动拾取时区,并将正确渲染为2013年11月7日。

感谢您的回复,我相信日期实际上是以1为基础的,只有月份是以零为基础的。但这一回应与我在帖子底部提出的解决方案基本相同。我从日期中提取每个日期对象,并以与您相同的方式重新分配作用域的日期对象。@mvargos谢谢。问题是,如果您可以使API以UTC格式返回日期,UI将更容易处理。您应该让SQL server返回包含时区的字符串,并且为了保持理智,DB应该以UTC格式存储所有日期。然后,Javascript和angular有许多工具以所需的格式+时区显示这些日期。