Что не так со скриптом?
[Не дубликат, т.к. я в скрипте уже вставил то что мне нужно, но оно не работает] Написал скрипт для VK API с функционалом SovaScript, но когда запускаю выдает не 02:07, а 2:7. Что надо исправить?
onStart = function(a) {
repeat(function(){
var date = new Date(); currentHours = date.getHours(); currentHours = ("0" + currentHours).slice(-2)
var time = ['?','?','?','?','?','?','?','?','?','?','?','?'][((new Date()).getHours()%12)] + date.getHours() + ":" + date.getMinutes()
Vk.call("status.set", {text: time}, function(response){log(response)});
}, 0, 60000);
};
P.S. тут везде есть отступ, сайт их не видит.
Ответы (1 шт):
У Вас же в коде есть пример, как добавить ведущий ноль
(но при формировании сообщения вы его игнорируете)
("0" + date.getHours()).slice(-2)
- Вы добавляете спереди "0"
- Обрезаете с правого краю 2 символа
Соответственно, если на входе будет 9, то они преобразуются следующим образом:
"9" -> "0" + "9" = "09" -> "09".slice(-2) = "09"
Если же на вход придёт 35, то преобразования будут выглядеть так:
"35" -> `"0" + "35" = "035" -> "035".slice(-2)= "35"
Соответственно, у Вас всегда строка будет состоять из двух символов и если число меньше 10 — оно будет начинаться с нуля.
Вы же получаете значения минут и часов в целочисленном формате
date.getHours() + ":" + date.getMinutes()
В итоге:
onStart = function(a) {
repeat(function(){
var date = new Date(),
currentHours = ("0" + date.getHours()).slice(-2),
currentMinutes = ("0" + date.getMinutes()).slice(-2),
index = (date.getHours() % 12);
clocks = ['?','?','?','?','?','?','?','?','?','?','?','?'],
time = clocks[index] + " " + currentHours + ":" + currentMinutes;
Vk.call("status.set", {text: time}, function(response){log(response)});
}, 0, 60000);
};
На выходе выдает:
? 06:25
Что как я полагаю и ожидалось вами