Функция setSeconds() не работает с веб-редактором p5.js.

Как и следовало ожидать, setSeconds(); обычно возвращает и устанавливает секунды текущей даты, переданные в указанное значение, которое находится внутри параметров. Но что бы я ни пробовал в веб-редакторе p5.js, это не дает абсолютно никакого эффекта.

Я хотел написать код, который вычислял бы угол (от горизонтали) и направление движущегося объекта. Попытался вставить функцию везде, где только можно вообразить, и даже изолировал свой фрагмент кода от остального, чтобы убедиться, что на него не влияет нежелательный внешний код (например, другие переменные).

function seconds_Passed()
{  
  timePassed = new Date() 
  timePassed.setSeconds(0); //Has no effect even though many js examples show 
                            //this as the way to do it.
  secondsPassed = timePassed.getSeconds();
  console.log(secondsPassed);
}

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


person David    schedule 08.06.2019    source источник
comment
извините, но не понял, что вы имеете в виду. Метод setSeconds() устанавливает секунды объекта даты. и я проверил это, и это работает. чего вы хотите добиться с помощью этой функции? @Дэйвид   -  person yaya    schedule 08.06.2019


Ответы (1)


setSeconds() не является функцией p5.js, это стандартный метод JS, который устанавливает секунды для указанной даты в соответствии с местным временем документы MDN.

Итак, разбор: -

function seconds_Passed()
{  
  timePassed = new Date() 
  timePassed.setSeconds(0); //Has no effect even though many js examples show 
                            //this as the way to do it.
  secondsPassed = timePassed.getSeconds();
  console.log(secondsPassed);
}

Всегда будет возвращать 0 для секунд.

Если вам нужно получить время между двумя событиями, вам нужно будет захватить две метки времени.

eg:-

function seconds_Passed()
{  
  const date = new Date();
  const start = date.getTime();
  console.log("Start UNIX time " + start);
  
  setInterval(() => {
  	const nowDate = new Date();
  	const timeParsed = (Math.round((nowDate.getTime() - start) / 1000));
    console.log(timeParsed + ' Seconds parsed since script started');
  }, 3000)
}

seconds_Passed()

Другой пример, показывающий нажатие кнопки: -

const date = new Date();
const start = date.getTime();

function buttonClicked()
{
  	const nowDate = new Date();
  	const timeParsed = (Math.round((nowDate.getTime() - start) / 1000));
    console.log(' It took you ' + timeParsed + ' second to click the button');
}
<button onclick="buttonClicked()">
Click me
</button>

person Hensler Software    schedule 08.06.2019
comment
Я ценю это. Но не могли бы вы также пояснить, почему веб-редактор не содержит этой функции? Я случайно наткнулся на этот редактор, предполагая, что это в основном Javascript? Если нет, то что это? И почему тогда он называется p5.js, если в нем нет некоторых стандартных функций Javascript? - person David; 08.06.2019
comment
Я только что протестировал ваш код в p5.js, и он работает именно так, как ожидалось. editor.p5js.org/henslersoftware/sketches/ZYsINHkkK - person Hensler Software; 08.06.2019