文字列値の問題は解析されます。 2016年5月10日と2016年10月5日は混乱する可能性があります。 2016-05-10または2016-10-05日付オブジェクトはそれを保護します。定義されたフィルタを使用して文字列データを日付オブジェクトに変換することはできませんか?
私はYYYYMMDD(20160516)という数値の日付形式を使用するAngular 1.xの日付フィルタからいくつかのコードをすぐに修正しました。
/**
* @name yourDate
* @ngdoc filter
* @requires $filter
* @param DateValue {string} Date Value (YYYY-MM-DD)
* @returns Date Filter with the Date Object
* @description
* Convert date from the format YYYY-MM-DD to the proper date object for future use by other objects/filters
*/
angular.module('myApp').filter('yourDate', function($filter) {
var DateFilter = $filter('date');
return function(DateValue) {
var Input = "";
var ResultData = DateValue;
if (! ((DateValue === null) || (typeof DateValue == 'undefined'))) {
if (Input.length == 10) {
var Year = parseInt(Input.substr(0,4));
var Month = parseInt(Input.substr(5,2)) - 1;
var Day = parseInt(Input.substr(8, 2));
var DateObject = new Date(Year, Month, Day);
ResultData = DateFilter(DateObject); // Return Input to the original filter (date)
} else {
}
} else {
}
return ResultData;
};
}
);
/**
* @description
* Work with dates to convert from and to the YYYY-MM-DD format that is stored in the system.
*/
angular.module('myApp').directive('yourDate',
function($filter) {
return {
restrict: 'A',
require: '^ngModel',
link: function($scope, element, attrs, ngModelControl) {
var slsDateFilter = $filter('yourDate');
ngModelControl.$formatters.push(function(value) {
return slsDateFilter(value);
});
ngModelControl.$parsers.push(function(value) {
var DateObject = new Date(value); // Convert from Date to YYYY-MM-DD
return DateObject.getFullYear().toString() + '-' + DateObject.getMonth().toString() + '-' + DateObject.getDate().toString();
});
}
};
}
);
このコードでは標準の角度フィルタオプションを使用しているため、これを素材日付ピッカーと組み合わせることができます。
ご質問が不明な場合は申し訳ありません。標準のHTML日付ピッカーが正規化された日付形式YYYY-MM-DDを受け入れることを意味しました。 ' ' JSON/AJAXの値はバインドするのが非常に簡単ですサーバーの応答。 –