如何将datepicker返回的日期格式转换为其他格式?

时间:2016-04-29 09:01:34

标签: javascript angularjs datepicker date-format angular-material

对于糟糕的标题感到抱歉,我并不知道如何更好地说出来。我将尝试尽可能地解释我的需求。

我目前正在Javascript中创建任务管理器(ToDo列表),您可以在其中创建任务,为其设置计划,然后您将拥有一个列表,其中包含您需要执行的所有任务以及相应的计划。每项任务(开始和结束日期)。

我正在使用 Angular.js Angular Material 来创建我的用户界面。我有Angular Material的datepicker。这是我用来获取日期值的代码:

angular.module('KBTM_App', ['ngMaterial']).controller('AppCtrl', function($scope) {
$scope.myDate1 = new Date();

...

// This is where I get the date value
var initial_date_1 = angular.element(document.querySelector('[ng-controller="AppCtrl"]')).scope().myDate1;

问题是这个日期选择器以这种格式返回日期:“2016-04-29T08:36:10.027Z”,我不想要。我想要一个更正常的格式,比如“DD-MM-YYYY”。

我尝试使用 Moment.js 转换日期格式,但这不起作用。这是我用于此的代码:

var initial_date = moment(initial_date_1, "YYYY-MM-DD'T'HH:MM:SS.SSS'Z'").format("DD-MM-YYYY");

然后我会将该日期存储在localStorage中:

// Get the other dates already in the list
var initial_dates = get_initial_dates();

// Adds the new date to that list
initial_dates.push(initial_date);

// Stores those dates in the localStorage
localStorage.setItem('initial_date_db', JSON.stringify(initial_dates));

使用该代码,我在尝试将新任务添加到任务列表时会收到“无效日期”。

很抱歉很长的帖子!

感谢能帮助我的人。

3 个答案:

答案 0 :(得分:1)

您可以使用角度素材datepicker在html中使用以下代码转换日期格式。

 data-ng-value="myDate1  | date : 'shortDate'"

答案 1 :(得分:1)

使用角度日期过滤器格式化日期。请参阅链接angular date

var  initial_date = $filter('date')($scope.myDate1, "dd-MM-yyyy");

在控制器主模块中注入$ filter。

答案 2 :(得分:0)

处理日期的最佳方法是使用momentjs并且有一个特殊的AJS指令可用。 angular-moment 您可以查看[momentjs][2]官方文档以获取详细信息。您必须添加angular-moment作为依赖注入才能轻松使用。 https://github.com/urish/angular-moment#instructions-for-using-moment-timezone-with-webpack