Javascript: конвертировать дату или делить на 1 - PullRequest
0 голосов
/ 25 мая 2018

Может кто-нибудь объяснить мне, что там делает Javascript?

Почему мне нужно разделить мс на 1, чтобы преобразовать дату?

d1=new Date(board.resultsbox.value/1);
d2=new Date(board.resultsbox.value);
board.resultsbox1.value=d1; //Fri Nov 01 2013 00:30:00 GMT+0100 (CET)
board.resultsbox2.value=d2; //Invalid Date

Спасибо и хороших выходных.

<html>
<head>
  <title>calculator based on javascript.</title>
</head>
<body>
  <form name="board" id="board">
    <input type="input" id="resultsbox" value="1383262200000">
    <input type="input" id="resultsbox1">
    <input type="input" id="resultsbox2">
  </form>
  <input type="button" onclick="
    d1=new Date(board.resultsbox.value/1);
    d2=new Date(board.resultsbox.value);
    board.resultsbox1.value=d1;
    board.resultsbox2.value=d2;" style="height: 80px;" value="=">
</body>
</html>

Ответы [ 5 ]

0 голосов
/ 25 мая 2018

В отличие от того, что можно подумать, здесь не проблема , а формат .

board.resultsbox.value это String

Это приемлемо, потому что new Date () имеет следующие допустимые наборы аргументов:

new Date();
new Date(value);
new Date(dateString);
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);

Но, очевидно, board.resultsbox.value - это строка, представляющая числовую метку времени.new Date(dateString) терпит неудачу, потому что принимает строки, разбираемые с помощью Date.parse () (пример '01 Jan 1970 00:00:00 GMT'), в то время как необходимо, чтобы числовые метки времени передавались как Number.

Деление - одно неявноеспособ разыграть String до Number.Следовательно, правильный формат и набор аргументов соблюдаются и new Date() работает.

0 голосов
/ 25 мая 2018

Вам нужно разобрать его в число, а затем преобразовать в дату:

<html>
<head>
  <title>calculator based on javascript.</title>
</head>
<body>
  <form name="board" id="board">
    <input type="input" id="resultsbox" value="1383262200000">
    <input type="input" id="resultsbox1">
    <input type="input" id="resultsbox2">
  </form>
  <input type="button" onclick="
    d1=new Date(board.resultsbox.value/1);
    d2=new Date(parseFloat(board.resultsbox.value));
    board.resultsbox1.value=d1;
    board.resultsbox2.value=d2;" style="height: 80px;" value="=">
</body>
</html>
0 голосов
/ 25 мая 2018

Значение, возвращаемое текстовым полем, является строкой, конструктор, в которой вы можете передать значение new Date, ожидает число.

Существует несколько способов преобразования строки в число в javascipt.некоторые из которых:

  • parseInt
  • +"1234"
  • "1234"/1

Кажется, авторэтот код был использован для последнего примера

0 голосов
/ 25 мая 2018

Поскольку board.resultsbox.value является строковым значением.Когда вы добавляете математическую операцию (в данном случае делим на 1), она автоматически преобразуется в числовое значение, приемлемое для конструктора Date.То же самое (но чище) можно достичь с помощью функции parseInt, например:

var millis = parseInt(board.resultsbox.value);

Подробнее о Date constructor можно прочитать здесь .

ТакжеЕсть много информации о том, как преобразовать строку в число, например, этот поток переполнения стека .

0 голосов
/ 25 мая 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...