Не могли бы вы заглянуть в мой код, который вычисляет разницу между двумя датами без использования встроенного метода?
var obj = { day: '', month: '', year: '' }; var months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; var countLeapYear = function () { var y = this.year; if(this.month <= 2){ y--; } return y/4-y/100+y/400; }; var bound1 = countLeapYear.bind(obj); var bound2 = getDifferenceDay.bind(obj); function getDifferenceDay(Day1, Day2){ var a = Day1.year*365 + Day1.day; for(var i=0; i<Day1.month - 1; i++ ){ a += months[i]; a += countleap(Day1); } var b = Day2.year*365 + Day2.day; for(var i=0; i<Day1.month - 1; i++ ){ a += months[i]; a += countleap(Day1); } return (b - a); } var Day1 = '1, 2, 2000'; var Day2 = '1, 2, 2004'; var obj1 = new getDifferenceDay(); console.log(obj1.getDifferenceDay(Day1, Day2));
Что я уже пробовал:
Я попытался вычислить дни между двумя датами без какого-либо встроенного метода javascript
W∴ Balboos, GHB
Вы его запустили? Это работает? Что вы хотите, чтобы мы сделали?
Не используя встроенные методы? Означает ли это разницу в датах или что - то связанное с датами?
Пожалуйста, измените свой вопрос на конкретный вопрос.
Member 14056052
Мне нужно вычислить разницу между двумя датами в javascript без использования встроенной библиотеки
Richard Deeming
Ну, это явно не сработает. Ваш getDifferenceDay
функция ожидает два объекта с day
, month
, и year
свойства; вы проходите через два string
s, которые не обладают этими свойствами.
Функция getDifferenceDay
возвращает число. Вы вызываете его как конструктор, а затем пытаетесь вызвать getDifferenceDay
метод на этом возвращаемом значении, который не будет работать. Просто вызовите функцию напрямую.
Это также очень грязно. Какова цель этого проекта? obj
переменная? А что это за двое bind
звонки, предназначенные для выполнения?
Member 14056052
Спасибо, что ответили. Я пробовал это сделать но у меня уже есть Нэн
var Day1 = {
день 1: ",
месяц 1: ",
год 1: "
};
ВАР День2 = {
день2: ",
month2: ",
год2: "
};
ВАР месяцы = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var countLeapYear = функция () {
ВАР у = Этот.год1;
если(this.month <= 2){
y--;
}
возврат y/4-y/100+y/400;
};
var getDifferenceDay = функция (День1, День2){
var a = Day1.year1*365 + Day1.day1;
for(var i=0; i<Day1.month1 - 1; i++ ){
a += месяцы[i];
a += обратный отсчет(День1);
}
var b = Day2.year2*365 + Day2.day2;
for(var i=0; i<this.month1 - 1; i++ ){
a += месяцы[i];
a += обратный отсчет(День2);
}
возврат (b - a);
}
var Day1 = '1, 2, 2000';
var Day2 = '1, 2, 2004';
console.log(getDifferenceDay(Day1, Day2));
Не могли бы вы помочь мне, если это возможно
Richard Deeming
Еще раз:
То getDifferenceDay
функция ожидает два параметра. В вашей обновленной функции первый параметр должен иметь вызываемые свойства day1
, month1
, и year1
; второй параметр должен иметь вызываемые свойства day2
, month2
, и year2
.
Вы проходите через два string
с.
То string
класс[^] не содержит ни одного из этих свойств.
Вместо:
var Day1 = '1, 2, 2000';
тебе нужно:
var Day1 = { day1: 1, month1: 2, year1: 2000 };
Аналогичное изменение для
Day2
.
Member 14056052
На самом деле я хочу передать эту дату в качестве параметра в функцию. Вот почему он пуст. Мне нужно каждый раз менять код, чтобы получить разницу в дне.
Я хочу передать что-то вроде этого.
var Day1 = '1, 2, 2000';
var Day2 = '1, 2, 2004';
console.log(getDifferenceDay(Day1, Day2));
Richard Deeming
Я не знаю, как еще объяснить вам это: если вы передадите строковое значение типа '1, 2, 2000'
, затем этого не будет свойства дня, месяца и года.
Вам нужно передать объект, который обладает этими свойствами.
То, что вы делаете в данный момент, похоже на то, как вы фотографируете Феррари и пытаетесь забраться в него, чтобы покататься.
Member 14056052
Не могли бы вы изменить мой код, чтобы получить ожидаемый результат ?
На самом деле я новичок в javascript
Richard Deeming
Это должно исправить очевидные ошибки:
var months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; var countLeapYear = function (date) { var y = date.year; if (date.month <= 2){ y--; } return y/4 - y/100 + y/400; }; var getDifferenceDay = function (startDate, endDate){ var a = startDate.year * 365 + startDate.day; for (var i = 0; i < startDate.month; i++) { a += months[i]; a += countLeapYear(startDate); } var b = endDate.year * 365 + endDate.day; for (var i = 0; i < endDate.month; i++) { b += months[i]; b += countLeapYear(endDate); } return b - a; } var day1 = { day: 1, month: 2, year: 2000 }; var day2 = { day: 1, month: 2, year: 2004 }; console.log(getDifferenceDay(day1, day2));
Меня все еще не убедила логика ваших расчетов. Но это твоя домашняя работа, так что тебе придется это исправить. :)
Member 14056052
Спасибо человеку за то, что он ответил на все вышесказанное.
Можно взять входное значение из html-формы