Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192

Русское название день месяца и Русское название день недели

27.09.2025, 12:59. Показов 2815. Ответов 39
Метки нет (Все метки)

Здравствуйте

Пожалуйста, помогите

Есть код

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function showclock(){
    JS_timeObj.setTime(systime_millsec);
    systime_millsec += 1000;
    JS_timeObj2 = JS_timeObj.toString();
    JS_timeObj2 = JS_timeObj2.substring(0,3) + ", " +
                  JS_timeObj2.substring(4,10) + "  " +
                  checkTime(JS_timeObj.getHours()) + ":" +
                  checkTime(JS_timeObj.getMinutes()) + ":" +
                  checkTime(JS_timeObj.getSeconds()) + "  " +
                  JS_timeObj.getFullYear() + " GMT" +
                  timezone;
    $("system_time").innerHTML = JS_timeObj2;
    setTimeout("showclock()", 1000);
}
На выходе отображается Английское название день месяца и Английское название день недели

Code
1
Sat, Sep 27 12:57:46 2025 GMT+0300
Code
1
2
3
Sun,Mon,Tue,Wed,Thu,Fri,Sat
 
Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec

Возможно или нет сделать так, чтобы было Русское название день месяца и Русское название день недели?

Code
1
2
3
Январь,Февраль,Март,Апрель,Май,Июнь,Июль,Август,Сентябрь,Октябрь,Ноябрь,Декабрь
 
Понедельник,Вторник,Среда,Четверг,Пятница,Суббота,Воскресенье
Или типа такого?

Code
1
2
3
4
5
%a  Сокращённое название дня недели От Sun до Sat
%A  Полное название дня недели   От Sunday до Saturday
 
%b  Сокращённое название месяца на основе локали От Jan до Dec
%B  Полное название месяца на основе локали
Спасибо
Миниатюры
Русское название день месяца и Русское название день недели  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.09.2025, 12:59
Ответы с готовыми решениями:

Составьте массив дней недели. Выведите все дни недели, а текущий день выведите курсивом
Составьте массив дней недели. Выведите все дни недели, а текущий день выведите курсивом.

Определить день недели для последнего дня месяца
Есть функция, возвращающую последнее число месяца. function getLastDayOfMonth(year, month) { ...

Дата вводится в трех полях: день, месяц, год. Определить день недели
Помогите решить задачку,плииз

39
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3857 / 1740 / 432
Регистрация: 14.03.2022
Сообщений: 4,434
28.09.2025, 10:42
Цитата Сообщение от SharkyEXE Посмотреть сообщение
возможно или нет сделать блок покороче
Конечно можно!
Например вот так...

JavaScript
1
2
3
4
5
6
7
8
const reps = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; 
const reps2 = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'];
String.prototype.replaceArray = function(find, replace) {
    const r = new RegExp(find.join('|')); 
    return this.replace(r, v => replace[find.indexOf(v)]);
};
let v = 'Sat, Sep 27 12:57:46 2025 GMT+0300'
console.log(v.replaceArray(reps, reps2));
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
28.09.2025, 15:50  [ТС]
krvsa, здравствуйте

Спасибо Вам, проверяю

UPD. Да, работает, отлично

Добавлено через 5 часов 0 минут
А если мне еще добавку сделать - названия месяцев - то блок String.prototype.replaceArray увеличится на одну строку?

const reps = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
const reps2 = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'];

const reps3 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
const reps4 = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'ИюНь', 'ИюЛь', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];

String.prototype.replaceArray = function(find, replace) {
const r = new RegExp(find.join('|'));
return this.replace(r, v => replace[find.indexOf(v)]);
return this.replace(r, w => replace[find.indexOf(w)]);
};
let v = 'Sat, Sep 27 12:57:46 2025 GMT+0300'
console.log(v.replaceArray(reps, reps2));
console.log(w.replaceArray(reps3, reps4));
Никак нельзя блок String.prototype.replaceArray как-то оптимизировать, просто по большому счету строки одинаковые
return this.replace(r, v => replace[find.indexOf(v)]);
return this.replace(r, w => replace[find.indexOf(w)]);

разница только v или w
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3857 / 1740 / 432
Регистрация: 14.03.2022
Сообщений: 4,434
28.09.2025, 16:30
SharkyEXE, я не понял куда ты "клонишь"...
У тебя есть метод строки replaceArray... Все что тебе нужно - просто пользоваться им.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
const reps = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
const reps2 = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'];
const reps3 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
const reps4 = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'ИюНь', 'ИюЛь', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];
 
String.prototype.replaceArray = function(find, replace) {
    const r = new RegExp(find.join('|')); 
    return this.replace(r, v => replace[find.indexOf(v)]);
};
let v = 'Sat, Sep 27 12:57:46 2025 GMT+0300'
console.log(v.replaceArray(reps, reps2).replaceArray(reps3, reps4));
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
28.09.2025, 16:57  [ТС]
krvsa, здравствуйте

Супер, класс, все получилось. Спасибо Вам человеческое!

JavaScript
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
28
29
function showclock(){
    JS_timeObj.setTime(systime_millsec);
    systime_millsec += 1000;
    JS_timeObj2 = JS_timeObj.toString();
 
    const reps = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; //Массив 1
    const reps2 = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота']; // массив 2
 
    const reps3 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; //Массив 3
    const reps4 = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'ИюНь', 'ИюЛь', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь']; // массив 4
 
    String.prototype.replaceArray = function(find, replace) {
        const r = new RegExp(find.join('|')); 
        return this.replace(r, v => replace[find.indexOf(v)]);
    };
 
    JS_timeObj44 = JS_timeObj2.substring(0,3).replaceArray(reps, reps2);
    JS_timeObj66 = JS_timeObj2.substring(4,10).replaceArray(reps3, reps4);
 
    JS_timeObj2 = JS_timeObj44 + ", " +
                  JS_timeObj66 + "  " +
                  checkTime(JS_timeObj.getHours()) + ":" +
                  checkTime(JS_timeObj.getMinutes()) + ":" +
                  checkTime(JS_timeObj.getSeconds()) + "  " +
                  JS_timeObj.getFullYear() + " GMT" +
                  timezone;
    $("system_time").innerHTML = JS_timeObj2;
    setTimeout("showclock()", 1000);
}
Воскресенье, Сентябрь 28 16:57:07 2025 GMT+0300
Миниатюры
Русское название день месяца и Русское название день недели  
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3857 / 1740 / 432
Регистрация: 14.03.2022
Сообщений: 4,434
28.09.2025, 17:30
Цитата Сообщение от SharkyEXE Посмотреть сообщение
JavaScript
1
2
JS_timeObj44 = JS_timeObj2.substring(0,3).replaceArray(reps, reps2);
    JS_timeObj66 = JS_timeObj2.substring(4,10).replaceArray(reps3, reps4);
При таком использовании метод replaceArray не нужен.
Аналог

JavaScript
1
2
JS_timeObj44 = reps2[reps.indexOf(JS_timeObj2.substring(0,3))];
JS_timeObj66 = reps4[reps3.indexOf(JS_timeObj2.substring(4,10))];
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
29.09.2025, 20:34  [ТС]
krvsa, здравствуйте

Прошу прощения, возможно я что-то делаю не так - но почему при таком варианте

function showclock(){
JS_timeObj.setTime(systime_millsec);
systime_millsec += 1000;
JS_timeObj2 = JS_timeObj.toString();

const reps = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; //Массив 1
const reps2 = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота']; // массив 2

const reps3 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; //Массив 3
const reps4 = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'ИюНь', 'ИюЛь', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь']; // массив 4

JS_timeObj44 = reps2[reps.indexOf(JS_timeObj2.substring(0,3))];
JS_timeObj66 = reps4[reps3.indexOf(JS_timeObj2.substring(4,10 ))];

JS_timeObj2 = JS_timeObj44 + ", " +
JS_timeObj66 + " " +
checkTime(JS_timeObj.getHours()) + ":" +
checkTime(JS_timeObj.getMinutes()) + ":" +
checkTime(JS_timeObj.getSeconds()) + " " +
JS_timeObj.getFullYear() + " GMT" +
timezone;
$("system_time").innerHTML = JS_timeObj2;
setTimeout("showclock()", 1000);
}
на выхлопе - так
Code
1
Понедельник, undefined 20:31:58 2025 GMT+0300
В строке
JS_timeObj66 = reps4[reps3.indexOf(JS_timeObj2.substring(4,10 ))];
очень тяжело ошибиться, но почему-то выхлоп - undefined
Миниатюры
Русское название день месяца и Русское название день недели  
0
 Аватар для voraa
1296 / 1280 / 190
Регистрация: 21.01.2024
Сообщений: 5,925
29.09.2025, 22:15
Хотелось бы увидеть исходную строку JS_timeObj2
Подозреваю, что начало там
"Mon, Sep 29 ...."
Тогда название месяца идет с 5 символа (если считать с 0) и до 8 (не включая). Тогда должно быть
JavaScript
1
JS_timeObj66 = reps4[reps3.indexOf(JS_timeObj2.substring(5,8))];
Добавлено через 32 минуты
Вообще не понятна эта возня с названиями на английском, потом заменой на русский...
У вас есть объект даты. Почему сразу на русский не выводить?
JavaScript
1
2
3
4
5
6
7
function showclock(){
    JS_timeObj.setTime(systime_millsec);
    systime_millsec += 1000;
    JS_timeObj2 = new Intl.DateTimeFormat("ru", {dateStyle: "full", timeStyle: "long"}).format(JS_timeObj);
    $("system_time").innerHTML = JS_timeObj2;
    setTimeout("showclock()", 1000);
}
Ну будете вы получать дату в формате типа
Code
1
понедельник, 29 сентября 2025 г. в 22:10:15 GMT+3
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
30.09.2025, 06:14  [ТС]
voraa, здравствуйте

1)
JS_timeObj2.substring(0,3); - отдает первые три буквы названия дня Sun Mon Tue
JS_timeObj2.substring(4,10); - отдает первые три буквы названия месяца Jan Feb Mar

", " - отдает запятую и пробел
" " - отдает два пробела

Я просто не пойму, почему метод
Code
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
28
29
function showclock(){
    JS_timeObj.setTime(systime_millsec);
    systime_millsec += 1000;
    JS_timeObj2 = JS_timeObj.toString();
 
    const reps = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; //Массив 1
    const reps2 = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота']; // массив 2
 
    const reps3 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; //Массив 3
    const reps4 = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'ИюНь', 'ИюЛь', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь']; // массив 4
 
    String.prototype.replaceArray = function(find, replace) {
        const r = new RegExp(find.join('|')); 
        return this.replace(r, v => replace[find.indexOf(v)]);
    };
 
    JS_timeObj44 = JS_timeObj2.substring(0,3).replaceArray(reps, reps2);
    JS_timeObj66 = JS_timeObj2.substring(4,10).replaceArray(reps3, reps4);
 
    JS_timeObj2 = JS_timeObj44 + ", " +
                  JS_timeObj66 + "  " +
                  checkTime(JS_timeObj.getHours()) + ":" +
                  checkTime(JS_timeObj.getMinutes()) + ":" +
                  checkTime(JS_timeObj.getSeconds()) + "  " +
                  JS_timeObj.getFullYear() + " GMT" +
                  timezone;
    $("system_time").innerHTML = JS_timeObj2;
    setTimeout("showclock()", 1000);
}
работает безупречно
Воскресенье, Сентябрь 28 16:57:07 2025 GMT+0300

А метод
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function showclock(){
JS_timeObj.setTime(systime_millsec);
systime_millsec += 1000;
JS_timeObj2 = JS_timeObj.toString();
 
const reps = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; //Массив 1
const reps2 = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота']; // массив 2
 
const reps3 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; //Массив 3
const reps4 = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'ИюНь', 'ИюЛь', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь']; // массив 4
 
JS_timeObj44 = reps2[reps.indexOf(JS_timeObj2.substring(0,3))];
JS_timeObj66 = reps4[reps3.indexOf(JS_timeObj2.substring(4,10 ))];
 
JS_timeObj2 = JS_timeObj44 + ", " +
JS_timeObj66 + " " +
checkTime(JS_timeObj.getHours()) + ":" +
checkTime(JS_timeObj.getMinutes()) + ":" +
checkTime(JS_timeObj.getSeconds()) + " " +
JS_timeObj.getFullYear() + " GMT" +
timezone;
$("system_time").innerHTML = JS_timeObj2;
setTimeout("showclock()", 1000);
}
ломается на выводе имя месяца как undefined
Понедельник, undefined 20:31:58 2025 GMT+0300

В чем разница между двумя одинаковыми способами, когда по идее обои способы обязаны одинаково русифицировать?

2) Почему сразу на русский не выводить?
Честно, прозрачно, откровенно - хочется русификации на данный момент.
Мол, есть оригинал, что плохого в простом русификаторе оригинала?
Миниатюры
Русское название день месяца и Русское название день недели  
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
30.09.2025, 06:41  [ТС]
voraa, здравствуйте

Ваш совет тоже не помогает, все равно отдает имя месяца как undefined
Code
1
Вторник, undefined 06:41:07 2025 GMT+0300
function showclock(){
JS_timeObj.setTime(systime_millsec);
systime_millsec += 1000;
JS_timeObj2 = JS_timeObj.toString();

const reps = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
const reps2 = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'];

const reps3 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
const reps4 = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'ИюНь', 'ИюЛь', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];

JS_timeObj44 = reps2[reps.indexOf(JS_timeObj2.substring(0,3))];
// JS_timeObj66 = reps4[reps3.indexOf(JS_timeObj2.substring(4,10 ))];
JS_timeObj66 = reps4[reps3.indexOf(JS_timeObj2.substring(5,8) )];

JS_timeObj2 = JS_timeObj44 + ", " +
JS_timeObj66 + " " +
checkTime(JS_timeObj.getHours()) + ":" +
checkTime(JS_timeObj.getMinutes()) + ":" +
checkTime(JS_timeObj.getSeconds()) + " " +
JS_timeObj.getFullYear() + " GMT" +
timezone;
$("system_time").innerHTML = JS_timeObj2;
setTimeout("showclock()", 1000);
}
Такой ерундистики впервые встречаю. Имя день недели переводится отлично, имя месяца - undefined. В чем разница между двумя строками - ту и ошибиться от слова очень тяжело
JS_timeObj44 = reps2[reps.indexOf(JS_timeObj2.substring(0,3))];
JS_timeObj66 = reps4[reps3.indexOf(JS_timeObj2.substring(5,8) )];
0
 Аватар для voraa
1296 / 1280 / 190
Регистрация: 21.01.2024
Сообщений: 5,925
30.09.2025, 07:17
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Ваш совет тоже не помогает, все равно отдает имя месяца как undefined
Еще раз

Цитата Сообщение от voraa Посмотреть сообщение
Хотелось бы увидеть исходную строку JS_timeObj2
Цитата Сообщение от SharkyEXE Посмотреть сообщение
В чем разница между двумя одинаковыми способами, когда по идее обои способы обязаны одинаково русифицировать?
Разница в том, что в первом работающем месяце используется replace. Он находит в указанной подстроке то, что нужно и заменяет. В неработающем методе вы пытаетесь сами заменить символы стоящие в каких то позициях и считаете эти позиции неправильно. (И я тоже считал неправильно, не видя исходной английской строки)
А строка там имеет вид
Code
1
Tue Sep 30 2025 07:07:49 GMT+0300 (Москва, стандартное время)
Ну ошибся и я, думая, что там между днем недели и месяцем есть запятая.
Месяц занимает позиции от 4 до 7 (не включая)
Значит
JavaScript
1
JS_timeObj66 = reps4[reps3.indexOf(JS_timeObj2.substring(4,7) )];
должно работать.

Добавлено через 4 минуты
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Мол, есть оригинал, что плохого в простом русификаторе оригинала?
Куча лишней работы.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
30.09.2025, 09:43  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Хотелось бы увидеть исходную строку JS_timeObj2
Я не знаток, не академик, не профессионал, напишу просто

Есть ВайФай роутер интернетовский ASUS RT-N56U B1 устройство

Внутри роутера - типа операционной системы (Линукс или другая), не суть

Внутри роутера - есть настройки, вводишь в интернет-браузере адрес http://192.168.1.1/ - и попадаешь внутрь роутера, всяко-разные настройки

Есть раздел - лог роутера, мол, какие команды, функции выполняются, кто подключается к роутеру за ВайФай интернетом

Есть строка - текущая дата, время роутера

Сейчас пишется
Sat, Sep 27 12:57:46 2025 GMT+0300

Вот целиком страница: https://pastebin.com/xRECznS3

Только часть кода, что выводит строку

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function showclock(){
    JS_timeObj.setTime(systime_millsec);
    systime_millsec += 1000;
    JS_timeObj2 = JS_timeObj.toString();
    JS_timeObj2 = JS_timeObj2.substring(0,3) + ", " +
                  JS_timeObj2.substring(4,10) + "  " +
                  checkTime(JS_timeObj.getHours()) + ":" +
                  checkTime(JS_timeObj.getMinutes()) + ":" +
                  checkTime(JS_timeObj.getSeconds()) + "  " +
                  JS_timeObj.getFullYear() + " GMT" +
                  timezone;
    $("system_time").innerHTML = JS_timeObj2;
    setTimeout("showclock()", 1000);
}
На выхлопе такая отдача
Code
1
Sat, Sep 27 12:57:46 2025 GMT+0300
Разбор отдачи

Как я понимаю (могу ошибаться)

JS_timeObj2.substring(0,3); - отдает первые три буквы названия дня Sun Mon Tue Wed Thu Fri Sat
", " - отдает запятую и пробел после "первые три буквы названия дня Sun Mon Tue" - то есть Sun{запятая}{пробел}

JS_timeObj2.substring(4,10); - отдает первые три буквы названия месяца Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
СТОП. Видимо в этой строке еще и номер дня недели заложен Sep{пробел}29 - цифра 29 как ДОбавка, ДОписка к "первые три буквы названия месяца Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"

" " - отдает два пробела после "первые три буквы названия месяца Jan Feb Mar" - то есть Sep 29{пробел}{пробел}

checkTime(JS_timeObj.getHours()) - отдает 2х значные (24-часа формат) цифры часы (01, 02..., 23)
checkTime(JS_timeObj.getMinutes()) - отдает 2х значные (24-часа формат) цифры минуты (01, 02..., 59)
checkTime(JS_timeObj.getSeconds()) - отдает 2х значные (24-часа формат) цифры секунды (01, 02..., 59)
JS_timeObj.getFullYear() - отдает цифры полный 4х значный год (2025, 2026, ..., 2100)
timezone - отдает тайзонут, сдвиг по времени

То есть получается, изначально позиция правильная 4,10 для отдачи имя месяц и день недели
Tue Sep 30
12345678910
0
 Аватар для voraa
1296 / 1280 / 190
Регистрация: 21.01.2024
Сообщений: 5,925
30.09.2025, 15:12
Цитата Сообщение от SharkyEXE Посмотреть сообщение
На выхлопе такая отдача
И где и как этот выхлоп попадает в вашу функцию?

JavaScript
1
2
3
JS_timeObj.setTime(systime_millsec);
systime_millsec += 1000;
JS_timeObj2 = JS_timeObj.toString();
Что такое JS_timeObj? Где и как это определяется?
Вы просто устанавливаете дату и время в JS_timeObj с какого то systime_millsec (где вы ее получаете?)
Потом эту дату и время преобразуете в строку функцией .toString()
Оно получается в виде
Code
1
Tue Sep 30 2025 07:07:49 GMT+0300 (Москва, стандартное время)
И уже из этой строки, а не из вашего выхлопа вы берете англ день недели и месяц.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
30.09.2025, 15:20  [ТС]
voraa, здравствуйте

Я особо не понимаю, про что Вы.

Я проверю этот код
Code
1
JS_timeObj66 = reps4[reps3.indexOf(JS_timeObj2.substring(4,7) )];
вечером 30.09.2025 - и напишу, ура-ура, или также имя месяца - undefined

Я пальцы никогда не гнул, права не качал и не предвидится - зачем? Просто что нужно - спрашиваю, узнаю, без упрека и претензий к тому, кто мне помогает

Просто когда не шибко алле, от слова соовсем не алло, по чужому коду я Вам не отвечу на это
Что такое JS_timeObj? Где и как это определяется?
Вы просто устанавливаете дату и время в JS_timeObj с какого то systime_millsec (где вы ее получаете?)
Я нашел state.js библиотеку, модуль - как умно называется. Вероятно, это то, что нужно: https://pastebin.com/XwGXUN3E

То есть то, что мне работает, что я русифицирую - обращается к библиотеке state.js https://pastebin.com/XwGXUN3E

Code
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
28
29
30
31
32
var uptimeStr = "<% uptime(); %>";
var newformat_systime = uptimeStr.substring(8,11) + " " + uptimeStr.substring(5,7) + " " + uptimeStr.substring(17,25) + " " + uptimeStr.substring(12,16);  //Ex format: Jun 23 10:33:31 2008
var systime_millsec = Date.parse(newformat_systime); // millsec from system
var JS_timeObj = new Date(); // 1970.1.1
 
function show_time(){
    JS_timeObj.setTime(systime_millsec); // Add millsec to it.
    JS_timeObj3 = JS_timeObj.toString();
    JS_timeObj3 = checkTime(JS_timeObj.getHours()) + ":" +
            checkTime(JS_timeObj.getMinutes()) + ":" +
            checkTime(JS_timeObj.getSeconds());
    $('systemtime').innerHTML ="<a href='/Advanced_System_Content.asp'>" + JS_timeObj3 + "</a>";
    systime_millsec += 1000;
    stime_ID = setTimeout("show_time();", 1000);
}
 
function showClockLogArea(){
    if(jQuery('#system_time').size() == 0){
        JS_timeObj.setTime(systime_millsec);
        systime_millsec += 1000;
 
        JS_timeObj2 = JS_timeObj.toString();
        JS_timeObj2 = JS_timeObj2.substring(0,3) + ", " +
        JS_timeObj2.substring(4,10) + "  " +
        checkTime(JS_timeObj.getHours()) + ":" +
        checkTime(JS_timeObj.getMinutes()) + ":" +
        checkTime(JS_timeObj.getSeconds()) + "  " +
        JS_timeObj.getFullYear() + " GMT" + timezone;
    }
    jQuery("#system_time_log_area").html(JS_timeObj2);
    setTimeout("showClockLogArea()", 1000);
}
Просьба не обижаться, пожалуйста
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
30.09.2025, 22:23  [ТС]
voraa, здравствуйте

1) Спасибо Вам человеческое - теперь все четко, строка помогла
Code
1
JS_timeObj66 = reps4[reps3.indexOf(JS_timeObj2.substring(4,7) )];
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function showclock(){
    JS_timeObj.setTime(systime_millsec);
    systime_millsec += 1000;
    JS_timeObj2 = JS_timeObj.toString();
 
    const reps = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
    const reps2 = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'];
 
    const reps3 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    const reps4 = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'ИюНь', 'ИюЛь', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];
 
    JS_timeObj44 = reps2[reps.indexOf(JS_timeObj2.substring(0,3))];
    JS_timeObj66 = reps4[reps3.indexOf(JS_timeObj2.substring(4,7) )];
 
    JS_timeObj2 = JS_timeObj44 + ", " +
                  JS_timeObj66 + "  " +
                  checkTime(JS_timeObj.getHours()) + ":" +
                  checkTime(JS_timeObj.getMinutes()) + ":" +
                  checkTime(JS_timeObj.getSeconds()) + "  " +
                  JS_timeObj.getFullYear() + " GMT" +
                  timezone;
    $("system_time").innerHTML = JS_timeObj2;
    setTimeout("showclock()", 1000);
}
На выхлопе - так
Вторник, Сентябрь 22:19:43 2025 GMT+0300
Небольшая бяка - между Русскими именем месяца Сентябрь и цифрами часы 22 пропало цифра дня недели 30

2) Ничего страшного

Сделал ДОбавку (выделил жирным) - отдачу цифры день недели
Code
1
JS_timeObj2.substring(8,10) + "  " +
Финальное итого

JavaScript
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
function showclock(){
    JS_timeObj.setTime(systime_millsec);
    systime_millsec += 1000;
    JS_timeObj2 = JS_timeObj.toString();
 
    const reps = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
    const reps2 = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'];
 
    const reps3 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    const reps4 = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'ИюНь', 'ИюЛь', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];
 
    JS_timeObj44 = reps2[reps.indexOf(JS_timeObj2.substring(0,3))];
    JS_timeObj66 = reps4[reps3.indexOf(JS_timeObj2.substring(4,7) )];
 
    JS_timeObj2 = JS_timeObj44 + ", " +
                  JS_timeObj66 + "  " +
                  [B]JS_timeObj2.substring(8,10) + "  " +[/B]
                  checkTime(JS_timeObj.getHours()) + ":" +
                  checkTime(JS_timeObj.getMinutes()) + ":" +
                  checkTime(JS_timeObj.getSeconds()) + "  " +
                  JS_timeObj.getFullYear() + " GMT" +
                  timezone;
    $("system_time").innerHTML = JS_timeObj2;
    setTimeout("showclock()", 1000);
}
На выхлопе - так
Вторник, Сентябрь 30 22:22:21 2025 GMT+0300
3) Была опаска, мол, будет или нет работать нормально когда день будет Октябрь 1, Октябрь 2,... Октябрь 9 (мол цифра день недели от 1 до 9 включительно) - все отлично
Среда, Октябрь 01 08:24:10 2025 GMT+1300
4) Если вместо тягомутины-спортивный интерес-русификатора использовать Ваш код Русское название день месяца и Русское название день недели
Code
1
2
3
4
5
6
7
function showclock(){
    JS_timeObj.setTime(systime_millsec);
    systime_millsec += 1000;
    JS_timeObj2 = new Intl.DateTimeFormat("ru", {dateStyle: "full", timeStyle: "long"}).format(JS_timeObj);
    $("system_time").innerHTML = JS_timeObj2;
    setTimeout("showclock()", 1000);
}
выхлоп тоже отличный
Code
1
среда, 1 октября 2025 г., 06:40:46 GMT+3
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
01.10.2025, 21:29  [ТС]
voraa, здравствуйте

Прошу прощения за назойливость, а вот если Русский язык работает в этом варианте
Code
1
2
3
4
5
6
7
function showclock(){
    JS_timeObj.setTime(systime_millsec);
    systime_millsec += 1000;
    JS_timeObj2 = new Intl.DateTimeFormat("ru", {dateStyle: "full", timeStyle: "long"}).format(JS_timeObj);
    $("system_time").innerHTML = JS_timeObj2;
    setTimeout("showclock()", 1000);
}
А никак нельзя применить Русский язык, типа функцию, параметр new Intl.DateTimeFormat("ru" для исходной строки

Code
1
2
3
4
5
6
7
8
JS_timeObj2 = JS_timeObj44 + ", " +
                  JS_timeObj66 + "  " +
                  [B]JS_timeObj2.substring(8,10) + "  " +[/B]
                  checkTime(JS_timeObj.getHours()) + ":" +
                  checkTime(JS_timeObj.getMinutes()) + ":" +
                  checkTime(JS_timeObj.getSeconds()) + "  " +
                  JS_timeObj.getFullYear() + " GMT" +
                  timezone;
Или параметр toLocaleString

В интернете много что написано, просто я сам не осилю, как то работает
0
 Аватар для voraa
1296 / 1280 / 190
Регистрация: 21.01.2024
Сообщений: 5,925
01.10.2025, 21:43
Цитата Сообщение от SharkyEXE Посмотреть сообщение
А никак нельзя применить Русский язык, типа функцию, параметр new Intl.DateTimeFormat("ru" для исходной строки
Нет. Потому, что Intl.DateTimeFormat работает не со строкой, а с объектом Date
JavaScript
1
new Intl.DateTimeFormat("ru", {dateStyle: "full", timeStyle: "long"}).format(JS_timeObj);
То, что передается в format - JS_timeObj это объект Date, а не строка.

Вместо
JavaScript
1
JS_timeObj2.substring(8,10) + "  " +
лучше уж
JavaScript
1
checkTime(JS_timeObj.getDate()) + "  " +
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
01.10.2025, 22:12  [ТС]
voraa, здравствуйте

Спасибо Вам, попробую сборку и с checkTime(JS_timeObj.getDate()) + " " +

А toLocaleString тоже нельзя применить для
Code
1
2
3
4
5
6
7
8
JS_timeObj2 = JS_timeObj44 + ", " +
                  JS_timeObj66 + "  " +
                  [B]JS_timeObj2.substring(8,10) + "  " +[/B]
                  checkTime(JS_timeObj.getHours()) + ":" +
                  checkTime(JS_timeObj.getMinutes()) + ":" +
                  checkTime(JS_timeObj.getSeconds()) + "  " +
                  JS_timeObj.getFullYear() + " GMT" +
                  timezone;
?
0
 Аватар для voraa
1296 / 1280 / 190
Регистрация: 21.01.2024
Сообщений: 5,925
01.10.2025, 22:53
Цитата Сообщение от SharkyEXE Посмотреть сообщение
А toLocaleString тоже нельзя применить для
Можно, но с тем же результатом. Метод toLocaleString применяется к объекту Date, а не к строке
Можно так
JavaScript
1
JS_timeObj2 = JS_timeObj.toLocaleString("ru", {dateStyle: "full", timeStyle: "long"});
Разница в том, что Intl.DateTimeFormat можно использовать более эффективно по времени, при многократных форматированиях. Можно было бы записать так

JavaScript
1
2
3
4
5
6
7
8
var ruDateFormat = new Intl.DateTimeFormat("ru", {dateStyle: "full", timeStyle: "long"});
function showclock(){
    JS_timeObj.setTime(systime_millsec);
    systime_millsec += 1000;
    JS_timeObj2 = ruDateFormat.format(JS_timeObj);
    $("system_time").innerHTML = JS_timeObj2;
    setTimeout("showclock()", 1000);
}
Но поскольку у вас это работает 1 раз в сек, то такая экономия ничего не даст.
Так, что можно и toLocaleString использовать и Intl.DateTimeFormat

Добавлено через 11 минут
Еще мне совершенно не понятна возня с миллисекундами
JavaScript
1
2
JS_timeObj.setTime(systime_millsec);
systime_millsec += 1000;
Зачем это? Почему не просто
JavaScript
1
JS_timeObj = new Date();
Тем более, что
JavaScript
1
setTimeout("showclock()", 1000);
Совершенно не гарантирует, что функция начнет выполняться через 1000 мс.
Это означает, что через 1000 мс функция будет поставлена в очередь на выполнение. А если перед ней там еще что то есть (какие то обработчики событий), то соответственно она начнет выполняться только после них.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
02.10.2025, 09:46  [ТС]
voraa, здравствуйте

1) Проверил такой вариант

Вместо
JS_timeObj2.substring(8,10) + " " +
лучше уж
checkTime(JS_timeObj.getDate()) + " " +
Полный код
Code
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
function showclock(){
    JS_timeObj.setTime(systime_millsec);
    systime_millsec += 1000;
    JS_timeObj2 = JS_timeObj.toString();
 
    const reps = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
    const reps2 = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'];
 
    const reps3 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    const reps4 = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'ИюНь', 'ИюЛь', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];
 
    JS_timeObj44 = reps2[reps.indexOf(JS_timeObj2.substring(0,3))];
    JS_timeObj66 = reps4[reps3.indexOf(JS_timeObj2.substring(4,7) )];
 
    JS_timeObj2 = JS_timeObj44 + ", " +
                  JS_timeObj66 + "  " +
                  checkTime(JS_timeObj.getDate()) + "  " +
                  checkTime(JS_timeObj.getHours()) + ":" +
                  checkTime(JS_timeObj.getMinutes()) + ":" +
                  checkTime(JS_timeObj.getSeconds()) + "  " +
                  JS_timeObj.getFullYear() + " GMT" +
                  timezone;
    $("system_time").innerHTML = JS_timeObj2;
    setTimeout("showclock()", 1000);
}
Выхлоп тоже отличный, номер дня недели присутствует (2х значный)
Четверг, Октябрь 02 09:45:38 2025 GMT+0300
2)
Еще мне совершенно не понятна возня с миллисекундами
А как переделать код
Code
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
function showclock(){
    JS_timeObj.setTime(systime_millsec);
    systime_millsec += 1000;
    JS_timeObj2 = JS_timeObj.toString();
 
    const reps = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
    const reps2 = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'];
 
    const reps3 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    const reps4 = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'ИюНь', 'ИюЛь', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];
 
    JS_timeObj44 = reps2[reps.indexOf(JS_timeObj2.substring(0,3))];
    JS_timeObj66 = reps4[reps3.indexOf(JS_timeObj2.substring(4,7) )];
 
    JS_timeObj2 = JS_timeObj44 + ", " +
                  JS_timeObj66 + "  " +
                  checkTime(JS_timeObj.getDate()) + "  " +
                  checkTime(JS_timeObj.getHours()) + ":" +
                  checkTime(JS_timeObj.getMinutes()) + ":" +
                  checkTime(JS_timeObj.getSeconds()) + "  " +
                  JS_timeObj.getFullYear() + " GMT" +
                  timezone;
    $("system_time").innerHTML = JS_timeObj2;
    setTimeout("showclock()", 1000);
}
БЕЗ этих строк
JS_timeObj.setTime(systime_millsec);
systime_millsec += 1000;
Я всегда чем меньше строк, тем лучше - и коду легче работается, и особо не алло, как я - немножечко понимать, как это работается?
0
 Аватар для voraa
1296 / 1280 / 190
Регистрация: 21.01.2024
Сообщений: 5,925
02.10.2025, 17:12
Цитата Сообщение от SharkyEXE Посмотреть сообщение
А как переделать код
Цитата Сообщение от SharkyEXE Посмотреть сообщение
БЕЗ этих строк
JS_timeObj.setTime(systime_millsec);
systime_millsec += 1000;
Я же выше написал. Вместо этих строк
JavaScript
1
JS_timeObj = new Date();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.10.2025, 17:12

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

date-fns форматирование из dd.mm.yyyy в день и название месяца
Добрый день. Пытал по оф. документации форматнуть дату вида 06.08.2020 в 6 августа. Но почему не...

bootstrap react-infinite-calendar. Как перевести названия месяцев на русский язык?
Локализовать дни недели получилось. Не знаю как сделать чтоб и названия месяцев были на русском

Сделайте функцию, которая принимает параметром число от 1 до 7, а возвращает день недели на русском языке
Сделайте функцию, которая принимает параметром число от 1 до 7, а возвращает день недели на русском...

ищу DatePicker с временем, списком выбора месяца и возможностью смены месяца после выбора числа
Привет. Ищу хороший DatePicker с указанными функциям. Немного расшифрую, что от него нужно: 1)...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru