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

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

01.01.2019, 14:22. Показов 9275. Ответов 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru