05.03.2019, 09:06
|
Кандидат Javascript-наук
|
|
Регистрация: 24.02.2019
Сообщений: 126
|
|
if – else if – else
Есть строка
d = new Date(new Date()- X*24*60*60*1000);
где X это числом и может быть от 10 до 15, я понимаю что тут надо применить конструкцию if – else if – else, кто нибудь может объяснить на словах что сейчас нужно сделать, создать функцию? или массив? или переменную? или ещё что?
я попытался через операторы отобразить при каких условиях чему равно Х
if (10==>=new Date(1582,9,15)&&<=new Date(1700,02,11))
else if (11==>=new Date(1700,02,12)&&<=new Date(1800,02,12))
else if (12==>=new Date(1800,02,13)&&<=new Date(1900,02,13))
else if (13==>=new Date(1900,02,14)&&<=new Date(2100,02,14))
else if (14==>=new Date(2100,02,15)&&<=new Date(2200,02,15))
else (15==>=Date(2200,02,16)&&<=Date(2300,02,16))
просто на словах объясните что сейчас делать, что читать и что искать...
|
|
05.03.2019, 09:35
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Сообщение от Besprizornik
|
попытался через операторы отобразить при каких условиях чему равно Х
|
По-моему у вас не вышло, попробуйте словами.
|
|
05.03.2019, 09:50
|
Кандидат Javascript-наук
|
|
Регистрация: 24.02.2019
Сообщений: 126
|
|
Х равно 10 если >=new Date(1582,9,15)&&<=new Date(1700,02,11))
Х равно 11 если >=new Date(1700,02,12)&&<=new Date(1800,02,12)
Х равно 12 если >=new Date(1800,02,13)&&<=new Date(1900,02,13)
Х равно 13 если >=new Date(1900,02,14)&&<=new Date(2100,02,14)
Х равно 14 если >=new Date(2100,02,15)&&<=new Date(2200,02,15)
Х равно 15 если >=Date(2200,02,16)&&<=Date(2300,02,16)
|
|
05.03.2019, 10:04
|
Кандидат Javascript-наук
|
|
Регистрация: 24.02.2019
Сообщений: 126
|
|
<table border="1">
<tr><td>Кол-во дней</td><td>период чч.мм.гггг – чч.мм.гггг</td></tr><tr><td>10</td><td>15.10.1582 — 11.03.1700</td></tr>
<tr><td>11</td><td>12.03.1700 — 12.03.1800</td></tr>
<tr><td>12</td><td>13.03.1800 — 13.03.1900</td></tr>
<tr><td>13</td><td>14.03.1900 — 14.03.2100</td></tr>
<tr><td>14</td><td>15.03.2100 — 15.03.2200</td></tr><tr><td>15</td><td>16.03.2200 — 16.03.2300</td></tr></table>
|
|
05.03.2019, 10:16
|
Аспирант
|
|
Регистрация: 01.03.2013
Сообщений: 77
|
|
возможно, вы хотели что-то вроде этого:
var x;
var someDate=new Date(1600,1,9); //произвольная дата
if (someDate>=new Date(1582,9,15)&&someDate<=new Date(1700,02,11)) x = 10;
else if (someDate>=new Date(1700,02,12)&&someDate<=new Date(1800,02,12)) x = 11;
else if (someDate>=new Date(1800,02,13)&&someDate<=new Date(1900,02,13)) x = 12;
else if (someDate>=new Date(1900,02,14)&&someDate<=new Date(2100,02,14)) x = 13;
else if (someDate>=new Date(2100,02,15)&&someDate<=new Date(2200,02,15)) x = 14;
else if (someDate>=new Date(2200,02,16)&&someDate<=new Date(2300,02,16)) x = 15;
|
|
05.03.2019, 10:19
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Я бы как-то так сделал:
(()=>{
const currentTime=new Date().getTime();//текущее время (unix time)
//Отсортированный список временных интервалов.
//Наименование свойства объекта - число, которое будет возвращено,
//если текущее время попадает в заданный интервал.
//Во вложенных массивах указываются аргументы, которые будут переданы конструктору Date
const ranges={
10:[[1582,9,15],[1700,02,11]],
11:[[1700,02,12],[1800,02,12]]
};
//Поиск только тех интервалов, в которые входит текущее время
return Object.keys(ranges).filter(day=>{
//Приведение границ интервала к типу int
const range=ranges[day].map(
args=>new Date(...args).getTime()
);
//Сравнение текущего времени и границ интервала
return (
currentTime>=range[0] && currentTime<=range[1]
);
}).shift()||0;//Возвращение первого подходящего ключа, либо 0
})();
Последний раз редактировалось Nexus, 05.03.2019 в 13:44.
|
|
05.03.2019, 10:31
|
Кандидат Javascript-наук
|
|
Регистрация: 24.02.2019
Сообщений: 126
|
|
а можно чуть подробнее?
я только пытаюсь учиться ...
хочу вставить в этот скрипт
<script>
var d = new Date();
document.addEventListener('DOMContentLoaded', function() {
document.querySelector('#day_gr').options[d.getDay()||7].selected = true;
document.querySelector('#date_gr').options[d.getDate()].selected = true;
document.querySelector('#month_gr').options[d.getMonth()+1].selected = true;
document.querySelector('#year_gr').value = d.getFullYear();
document.querySelector('#day_ul').options[d.getDay()||7].selected = true;
d = new Date(new Date()-13*24*60*60*1000);
document.querySelector('#date_ul').options[d.getDate()].selected = true;
document.querySelector('#month_ul').options[d.getMonth()+1].selected = true;
document.querySelector('#year_ul').value = d.getFullYear();
});
</script>
|
|
05.03.2019, 10:34
|
Кандидат Javascript-наук
|
|
Регистрация: 24.02.2019
Сообщений: 126
|
|
в 9 строчке что бы отнималось разное количество дней...
|
|
05.03.2019, 10:41
|
Аспирант
|
|
Регистрация: 01.03.2013
Сообщений: 77
|
|
разное количество дней зависит от выбранного периода ведь?
тогда нужно еще откуда то брать время, по которому определить вычитаемое количество дней
|
|
05.03.2019, 10:48
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Besprizornik, обратите внимание на const, стрелочные функции и spread-оператор, они не поддерживаются старыми браузерами.
var x=(()=>{
const currentTime=new Date().getTime();
const ranges={
10:[[1582,9,15],[1700,02,11]],
11:[[1700,02,12],[1800,02,12]]
};
return Object.keys(ranges).filter(day=>{
const range=ranges[day].map(
args=>new Date(...args).getTime()
);
return (
currentTime>=range[0] && currentTime<=range[1]
);
}).shift()||0;
})();
var d = new Date();
document.addEventListener('DOMContentLoaded', function() {
document.querySelector('#day_gr').options[d.getDay()||7].selected = true;
document.querySelector('#date_gr').options[d.getDate()].selected = true;
document.querySelector('#month_gr').options[d.getMonth()+1].selected = true;
document.querySelector('#year_gr').value = d.getFullYear();
document.querySelector('#day_ul').options[d.getDay()||7].selected = true;
d = new Date(new Date()-x*24*60*60*1000);
document.querySelector('#date_ul').options[d.getDate()].selected = true;
document.querySelector('#month_ul').options[d.getMonth()+1].selected = true;
document.querySelector('#year_ul').value = d.getFullYear();
});
|
|
|
|