Мне нужна помощь. Мне нужно сравнить сегодняшнюю дату с будущей датой, используя Angular.js. Я объясняю свой код ниже.
$scope.getFutureDate = function() {
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd
}
if (mm < 10) {
mm = '0' + mm
}
var today = dd + '-' + mm + '-' + yyyy;
return today;
}
$scope.addPlanData = function() {
var today = $scope.getFutureDate();
if (today < $scope.date) {
alert('Please select todays date or previous date');
}
}
Здесь мое требование, когда сегодняшняя дата будет меньше, чем будущая дата, она покажет мне предупреждение. В этом коде это происходит только в течение месяца. Но если я буду сравнивать с таким же образом 30-11-2015 with 1-12-2015
, он не показывает никаких предупреждающих сообщений. Пожалуйста, помогите мне.
Вам нужно манипулировать строкой для создания даты.
Попробуй это
$scope.addPlanData=function(){
var today= new Date();
if(today < new Date($scope.date.split("-").reverse().join(",")){
alert("Please select today date or previous date");
}
}
Он дает вам предупреждение, когда пользователь выбирает будущую дату, которая больше, чем сегодня. Если вы хотите, чтобы пользователь выбирал последнюю дату, используйте условие >
in if.
Вы можете использовать регулярное выражение, чтобы сделать то же самое.
Преобразуйте строку до даты, используя регулярное выражение, а затем используйте < or > or <= or >=
для сравнения.
$scope.compare = function() {
var date1 = "30-11-2015";
var date2 = "1-12-2015";
var d1 = new Date( date1.replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3") );
var d2 = new Date( date2.replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3") );
alert(d1 < d2);
};
Ссылка: qaru.site/questions/47962/...
Попробуй это
$scope.addPlanData=function(){
var today= new Date();
var dateArray = $scope.date.split("-");
$scope.date = new Date(dateArray[2], dateArray[1] - 1, dateArray[0]);
if(today < $scope.date){
alert('Please select today or previous date');
}
}
Реляционные операторы <
<=
>
>=
могут использоваться для сравнения дат JavaScript.
$scope.date
, я получаю дату из календаря.
dd-mm-yyyy
.
Похоже, вы хотите проанализировать дату из пользовательского формата (dd-mm-yyyy
).
Я бы рекомендовал использовать выделенную функцию для синтаксического анализа формата даты, особенно если вам нужно проанализировать формат такого формата более чем в этом случае:
function parseDate(dateString) {
var date = new Date();
// reset time to 0:00:00
date.setUTCHours(0);
date.setUTCMinutes(0);
date.setUTCSeconds(0);
var parts = dateString.split("-");
date.setUTCDate(parts[0]);
date.setUTCMonth(parts[1]);
date.setUTCFullYear(parts[2]);
return date;
}
И используйте его вот так:
$scope.addPlanData = function() {
var today = new Date();
if (today < parseDate($scope.date)) { // parse custom date format here
alert('Please select todays date or previous date');
}
}
Когда вы сравниваете даты как строки, сравнение берет по одному символу за раз, а потому, что в вашем примере 3 больше 1 (даже если 30-11-2015
меньше, чем 1-12-2015
), результат больше для ноябрьской даты. Если вы хотите придерживаться строковых представлений дат, измените формат даты на YYYY-MM-DD
, так что сначала вы сравните год, затем месяц, затем день. В этой ситуации вы будете иметь 2015-12-01
больше, чем 2015-11-30
, потому что сравнение остановится на 2
с единицы измерения месяца.
$scope.getFutureDate = function () {
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();
if ( dd < 10 ) {
dd = '0' + dd;
}
if ( mm < 10 ) {
mm = '0' + mm;
}
return yyyy + '-' + mm + '-' + dd;
}
$scope.addPlanData = function () {
var today = $scope.getFutureDate();
if ( today < $scope.date ) {
alert('Please select todays date or previous date');
}
}
Вы можете сравнить даты напрямую. В этой заботе вам необходимо $scope.date
переменную $scope.date
в формате Date
по переменной $scope.date = new Date($scope.date)
и сравнить ее с new Date()
. Этот метод дает вам меньше кода, так как вам не нужен метод getFutureDate
.
$scope.addPlanData = function () {
if ( new Date() < new Date($scope.date) ) {
alert('Please select todays date or previous date');
}
}
dd--mm-yyyy
Будет ли хорошо? Я предпочту решение 1.
Date
, не так ли?