Показать сообщение отдельно
  #6 (permalink)  
Старый 05.03.2019, 10:19
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,799

Я бы как-то так сделал:
(()=>{
    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.
Ответить с цитированием