对于糟糕的标题感到抱歉,我并不知道如何更好地说出来。我将尝试尽可能地解释我的需求。
我目前正在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));
使用该代码,我在尝试将新任务添加到任务列表时会收到“无效日期”。
很抱歉很长的帖子!
感谢能帮助我的人。
答案 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