Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/47: Рейтинг темы: голосов - 47, средняя оценка - 4.81
5 / 5 / 0
Регистрация: 25.07.2017
Сообщений: 53

Вывод текста в зависимости от текущей даты

01.01.2019, 14:22. Показов 9370. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите, пожалуйста, как можно на JavaScript реализовать вывод текста в зависимости от текущей даты:

если дата от 01.05.2019 и до 07.05.2019, должно выводиться "Неделя первая"
если дата от 08.05.2019 и до 14.05.2019, должно выводиться "Неделя вторая"
если дата от 15.05.2019 и до 21.05.2019, должно выводиться "Неделя третья"
если дата от 22.05.2019 и до 28.05.2019, должно выводиться "Неделя четвёртая"
если дата от 29.05.2019 и до 04.06.2019, должно выводиться "Неделя пятая"
если дата от 05.06.2019 и до 11.06.2019, должно выводиться "Неделя шестая"
если дата от 12.06.2019 и до 18.06.2019, должно выводиться "Неделя седьмая"
если дата от 19.06.2019 и до 25.06.2019, должно выводиться "Неделя восьмая"
если дата от 26.06.2019 и до 02.07.2019, должно выводиться "Неделя девятая"
если дата от 03.07.2019 и до 09.07.2019, должно выводиться "Неделя десятая"
если дата от 10.07.2019 и до 16.07.2019, должно выводиться "Неделя одиннадцатая"

Спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.01.2019, 14:22
Ответы с готовыми решениями:

Отображение файла в зависимости от текущей даты
Доброго времени суток! Имеется 365 файликов, и на странице сайта нужно отображать содержание того, название которого соответствует...

Вывод текущей даты и времени
Всем привет, сразу скажу, я учусь, по этому извините если что не так спрошу: почему может не работать этот код? var now = new...

Вывод текста в зависимости от времени
Добрый вечер. Можно ли доработать это скрипт <script language="JavaScript"> var h=(new Date()).getHours(); if (h > 23...

31
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
01.01.2019, 15:54
monetgen, если у вас есть дата начала отсчета и текущая дата, можно получить разницу в днях между этими датами и эту разницу разделить на 7, результат округлить и получить номер дня недели. Теперь вам нужно числовой номер недели представить прописью. Для этого можно воспользоваться каким-либо готовым скриптом, которых уже достаточно много в сети (запрос а-ля "JS число прописью"). Как вычислить номер недели помогу, а с числом прописью - разберетесь сами, в зависимости от того, какой скрипт подберете для своей задачи.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Дата начала отсчета в миллисекундах
const startTime = (new Date('2019-05-01')).getTime() - 1;
// Один день в миллисекундах
const oneDay = 24 * 60 * 60 * 1000;
 
// Текущая дата в миллисекундах
const nowTime = (new Date()).getTime();
/*
// для теста можно дату указывать вручную
const nowTime = (new Date('2019-05-22')).getTime();
*/
// Номер недели
const week = Math.ceil((nowTime - startTime) / oneDay / 7);
console.log(week);
1
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
01.01.2019, 16:02
JavaScript
1
2
3
4
5
6
7
8
9
10
11
const getNumberWeeck = (year, month, num) => {
    let enterDate = +new Date(year, month, num);
    let serialNumbers = ['первая','вторая','третья','четвёртая','пятая','шестая',
                         'седьмая','восьмая','девятая','десятая','одиннадцатая'];
    for(let i = 0, start = +new Date(2019,5,1), weeck = 7 * 24 * 3600 * 1000; i < serialNumbers.length; i++, start += weeck){
        if(enterDate >= start && enterDate < start + weeck)
            return `Неделя ${serialNumbers[i]}`;
    }
    return 'Введённая дата находится вне заданного диапазона времени';
}
console.log(getNumberWeeck(2019,7,16));//Неделя одиннадцатая
1
01.01.2019, 16:07

Не по теме:

Цитата Сообщение от klopp Посмотреть сообщение
Неделя одиннадцатая
Неужели двенадцатую неделю человечеству не увидеть? :)

0
01.01.2019, 16:10

Не по теме:

Lazy_Den, Всё как в ТЗ!))) С наступившим!

0
01.01.2019, 16:13

Не по теме:

Цитата Сообщение от klopp Посмотреть сообщение
С наступившим!
И вас так же ))

0
5 / 5 / 0
Регистрация: 25.07.2017
Сообщений: 53
01.01.2019, 19:03  [ТС]
klopp, большое спасибо за способ!
Я решил попробовать - вывести номер текущей недели на текущую дату. Заменил дату начала на 29 октября 2018 г., а дату завершения - на 13.01.2019. Как раз 11 недель.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
<script type='text/javascript'>
const getNumberWeeck = (year, month, num) => {
    let enterDate = +new Date(year, month, num);
    let serialNumbers = ['первая','вторая','третья','четвёртая','пятая','шестая',
                         'седьмая','восьмая','девятая','десятая','одиннадцатая'];
    for(let i = 0, start = +new Date(2018,10,29), weeck = 7 * 24 * 3600 * 1000; i < serialNumbers.length; i++, start += weeck){
        if(enterDate >= start && enterDate < start + weeck)
            return `Неделя ${serialNumbers[i]}`;
    }
    return 'Введённая дата находится вне заданного диапазона времени';
}
console.log(getNumberWeeck(2019,1,13));//Неделя одиннадцатая
</script>
Результат вывожу в нужном месте на странице с помощью
JavaScript
1
<script type='text/javascript'>document.write(getNumberWeeck());</script>
Но результат, почему-то, Введённая дата находится вне заданного диапазона времени

Вы не могли бы подсказать, в чем причина?
Спасибо!
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
01.01.2019, 19:27
monetgen, Lazy_Den, klopp, c наступившим Новым годом!
(У меня болит голова, так что сильно по голове не бейте, если что...)
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!doctype html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <script>
        {
            let start = new Date(2019, 4, 1); // Начало отсчета
            let current = new Date(2019, 4, 28, 14, 30, 25); // Текущее дата-время
            console.log(week(start, current));
        }
        {
            let start = new Date(2018, 9, 29); // Начало отсчета
            let current = new Date(2019, 0, 13); // Текущее дата-время
            console.log(week(start, current));
        }
        function week(start, current) {
            let weekms = 3600000 * 24 * 7,
                names = ["первая", "вторая", "третья", "четвёртая", "пятая", "шестая", "седьмая", "восьмая", "девятая", "десятая", "одиннадцатая"],
                count = Math.floor((current - start) / weekms);
 
            return "Неделя " + (count >= 0 && count < 11 ? names[count] : count);
        }
    </script>
</body>
</html>
Добавлено через 3 минуты
Цитата Сообщение от monetgen Посмотреть сообщение
в чем причина
JavaScript у Java унаследовал позорную нумерацию месяцев с нуля.
1
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
01.01.2019, 20:12
Цитата Сообщение от monetgen Посмотреть сообщение
Но результат, почему-то
ну дык а чего вы ожидали? вы же не ввели дату. функция getNumberWeeck принимает три аргумента: год, месяц и число. и где они у вас?
Цитата Сообщение от monetgen Посмотреть сообщение
document.write(getNumberWeeck());
???
1
5 / 5 / 0
Регистрация: 25.07.2017
Сообщений: 53
01.01.2019, 20:41  [ТС]
klopp, большое спасибо за пояснение.
В коде
JavaScript
1
2
3
<script type='text/javascript'>
document.write(getNumberWeeck());
</script>
я поставил текущую дату (01.01.2019):
JavaScript
1
2
3
<script type='text/javascript'>
document.write(getNumberWeeck(2019,1,1));
</script>
и результат получился верный.

Подскажите, пожалуйста, как сделать, чтобы в указанном мною фрагменте кода автоматически вставала текущая дата.
Спасибо!
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
01.01.2019, 21:32
monetgen,
в getNumberWeeck(2019,1,1) указан февраль. Нумерация месяца начинается с нуля.

Текущая дата let date = new Date();
1
5 / 5 / 0
Регистрация: 25.07.2017
Сообщений: 53
01.01.2019, 21:54  [ТС]
amr-now, спасибо Вам за ответ!

Подставлял в код Date():
JavaScript
1
2
3
<script type='text/javascript'>
document.write(getNumberWeeck(Date()));
</script>
, пробовал new Date():
JavaScript
1
2
3
<script type='text/javascript'>
document.write(getNumberWeeck(new Date()));
</script>
, пробовал let date():
JavaScript
1
2
3
<script type='text/javascript'>
document.write(getNumberWeeck(let date()));
</script>
Но я что-то не так делаю, и код не выводит номер недели в соответствии с сегодняшней датой.

Подскажите, пожалуйста, как сделать, чтобы текущая дата автоматически вставала в фрагмент кода:
JavaScript
1
2
3
<script type='text/javascript'>
document.write(getNumberWeeck(          ));
</script>
Спасибо!
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
01.01.2019, 22:14
monetgen, сформулируйте заново задачу. У Вас сейчас скрипт не соответствует задаче из самого первого сообщения.
С какой целью нужно перечислить 11 одинаковых строк?
0
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
02.01.2019, 06:55
Цитата Сообщение от monetgen Посмотреть сообщение
чтобы текущая дата автоматически вставала в фрагмент кода
JavaScript
1
getNumberWeeck(new Date().getFullYear(), new Date().getMonth(), new Date().getDay())
1
5 / 5 / 0
Регистрация: 25.07.2017
Сообщений: 53
02.01.2019, 12:21  [ТС]
klopp, amr-now, Lazy_Den, большое спасибо, все получилось.

(я воспользовался способом klopp)

К сожалению, в Internet Explorer 11 результат не выводится. Подскажите, пожалуйста, с чем это может быть связано.
0
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
02.01.2019, 14:57
Цитата Сообщение от monetgen Посмотреть сообщение
К сожалению, в Internet Explorer 11 результат не выводится
IE11 не поддерживает ES6
в Edge проблем нет
1
5 / 5 / 0
Регистрация: 25.07.2017
Сообщений: 53
09.01.2019, 11:17  [ТС]
Здравствуйте.
Я понаблюдал за работой этого счётчика. Заметил очень странную ситуацию.

В коде вывода счётчика сейчас написано
JavaScript
1
2
3
<script type='text/javascript'>
document.write(getNumberWeeck(new Date().getFullYear(), new Date().getMonth(), new Date().getDay()));
</script>
И почему-то выводится не текущая неделя, а предыдущая.


Но если в коде я вручную прописываю текущую дату (9 января 2019 года):
JavaScript
1
2
3
<script type='text/javascript'>
document.write(getNumberWeeck(2019,0,9));
</script>
то выводится верный результат - именно текущая неделя.

На всякий случай, сверил текущую дату с датой, которая установлена на хостинге - они совпадают.

Подскажите, пожалуйста, в чём может быть причина.
Спасибо!
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
09.01.2019, 12:46
Лучший ответ Сообщение было отмечено monetgen как решение

Решение

monetgen, рабочий скрипт в IE11. Нужно всего лишь let поменять на var.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!doctype html>
<html>
<head>
    <meta charset="utf-8" />
</head>
 
<body>
    <script>
        var start = new Date(2018, 10, 29); // Начало отсчета (здесь ноябрь!)
        var current = new Date(2019, 1, 13); // Текущее дата-время (здесь февраль!)
        document.write(week(start, current));
 
        function week(start, current) {
            var weekms = 3600000 * 24 * 7,
                names = ["первая", "вторая", "третья", "четвёртая", "пятая", "шестая", "седьмая", "восьмая", "девятая", "десятая", "одиннадцатая"],
                count = Math.floor((current - start) / weekms);
 
            return "Неделя " + (count >= 0 && count < 11 ? names[count] : count);
        }
    </script>
</body>
</html>
Вариант от klopp, адаптированный к IE11:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!doctype html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <script>
        function getNumberWeeck(year, month, num) {
            var enterDate = +new Date(year, month, num);
            var serialNumbers = ['первая', 'вторая', 'третья', 'четвёртая', 'пятая', 'шестая',
                'седьмая', 'восьмая', 'девятая', 'десятая', 'одиннадцатая'];
            for (var i = 0, start = +new Date(2018, 10, 29), weeck = 7 * 24 * 3600 * 1000; i < serialNumbers.length; i++ , start += weeck) {
                if (enterDate >= start && enterDate < start + weeck)
                    return 'Неделя ' + serialNumbers[i];
            }
            return 'Введённая дата находится вне заданного диапазона времени';
        }
        
        document.write(getNumberWeeck(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()));
    </script>
</body>
</html>
new Date().getDate() - день месяца.
1
5 / 5 / 0
Регистрация: 25.07.2017
Сообщений: 53
09.01.2019, 13:58  [ТС]
amr-now, спасибо большое!

В Вашем коде заменил
JavaScript
1
var current = new Date(2019, 1, 13);
на:
JavaScript
1
var current = new Date();
И теперь, как я понимаю, он будет брать текущую дату.

Спасибо!
0
5 / 5 / 0
Регистрация: 25.07.2017
Сообщений: 53
09.01.2020, 00:56  [ТС]
Здравствуйте! Надеюсь, не возбраняется возродить эту тему, т.к. мой новый вопрос подходит под название темы.
Есть 11 диапазонов дат (диапазоны, в отличие от проблемы, которая решалась выше, содержат в себе разное количество дней):
если текущая дата находится в диапазоне 29.08.2019–25.09.2019, то должно выводиться "номер 1"
если текущая дата находится в диапазоне 26.09.2019–30.10.2019, то должно выводиться "номер 2"
если текущая дата находится в диапазоне 31.10.2019–27.11.2019, то должно выводиться "номер 3"
если текущая дата находится в диапазоне 28.11.2019–25.12.2019, то должно выводиться "номер 4"
если текущая дата находится в диапазоне 26.12.2019–29.01.2020, то должно выводиться "номер 5"
если текущая дата находится в диапазоне 30.01.2020–26.02.2020, то должно выводиться "номер 6"
если текущая дата находится в диапазоне 27.02.2020–01.04.2020, то должно выводиться "номер 7"
если текущая дата находится в диапазоне 02.04.2020–29.04.2020, то должно выводиться "номер 8"
если текущая дата находится в диапазоне 30.04.2020–28.05.2020, то должно выводиться "номер 9"
если текущая дата находится в диапазоне 29.05.2020–02.07.2020, то должно выводиться "номер 10"
если текущая дата находится в диапазоне 03.07.2020–25.08.2020, то должно выводиться "номер 11"

Подскажите, пожалуйста, как можно сделать вывод номера в зависимости от текущей даты.
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.01.2020, 00:56
Помогаю со студенческими работами здесь

Автозаполнение текущей даты
Доброе время суток Помогите разобраться почему не присваеваеться по умолчанию текущия дата. отдельный обьект. const TimeSheetListEdit...

вывод текста исходя из текущей даты
Добрый день! Создал простенькую БД, состоящую из двух колонок: &quot;Дата&quot; и &quot;Событие&quot;: Дата Событие 01.10.2016 Текст 1 ...

Изменение пути в ярлыке в зависимости от текущей даты
Добрий день! Помогите создать BAT для изменения пути в ярлике. Сейчас ярлик настроен на N:\In\03042015. нужно чтоби BAT менял дату...

Ошибки в формулах в зависимости от текущей даты компьютера
Доброго дня проблема такая есть Excel документ с формулами, если его запускаешь и на компьютере стоит дата сегодняшняя то в ячейке с...

Добавление значений в ячейки в зависимости от текущей даты
Добрый день Уважаемые Форумчане! Пришло время простить о помощи. Необходимо в таблице при добавлении количества товара это число должно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru