|
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)) просто на словах объясните что сейчас делать, что читать и что искать... |
Цитата:
|
Х равно 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) |
<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> |
возможно, вы хотели что-то вроде этого:
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; |
Я бы как-то так сделал:
(()=>{ 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 })(); |
а можно чуть подробнее?
я только пытаюсь учиться ... хочу вставить в этот скрипт <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> |
в 9 строчке что бы отнималось разное количество дней...
|
разное количество дней зависит от выбранного периода ведь?
тогда нужно еще откуда то брать время, по которому определить вычитаемое количество дней |
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(); }); |
Часовой пояс GMT +3, время: 00:51. |
|