3

我正在尝试在 AngularJS 应用程序中创建日期输入,但无法格式化日期。我创建了一个 plnkr 来说明我的问题:http ://plnkr.co/edit/LbQIPG?p=preview

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

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

1 回答 1

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。

于 2013-08-12T17:57:23.933 回答