конвертировать только время String в Timestamp - PullRequest
2 голосов
/ 08 января 2020

Итак, у меня есть строка времени, которая показывает время как h:m:s.ms Но проблема в том, что я хочу преобразовать их в значения меток времени, которые показывает NaN значения.

Я использую Date.parse() чтобы преобразовать время в метку времени.

Вот код, который я пробовал.

var date;
function myFunction() {
  var d = new Date();
  var h = addZero(d.getHours(), 2);
  var m = addZero(d.getMinutes(), 2);
  var s = addZero(d.getSeconds(), 2);
  var ms = addZero(d.getMilliseconds(), 3);
  var maindate = h + ":" + m + ":" + s + "." + ms ;
  var datestring = Date.parse(maindate)
  var data = Math.random(0,1); 
  console.log("Date : ", maindate) ;
  console.log("Data : ", data);
 }
  myFunction();

Вы можете увидеть date и data в окне консоли.

переменная date здесь показывает значение NaN.

Пожалуйста, скажите мне, что я делаю неправильно.

Ответы [ 4 ]

1 голос
/ 08 января 2020

Если вам нужна временная метка, вам нужно полное время с днем, месяцем и годом

var date;

function myFunction() {
  var d = new Date();
  var h = addZero(d.getHours(), 2);
  var m = addZero(d.getMinutes(), 2);
  var s = addZero(d.getSeconds(), 2);
  var ms = addZero(d.getMilliseconds(), 3);

  var day = d.getDate();
  var month = d.getMonth() + 1; // getMonth returns an integer between 0 and 11
  var year = d.getFullYear();  

  var maindate = `${day}-${month}-${year} ${h}:${m}:${s}.${ms}`;
  var datestring = Date.parse(maindate)
  console.log("Data : ", datestring);
 }
  myFunction();

0 голосов
/ 08 января 2020

Для этого вам больше не нужна ваша addZero() функция, и нет необходимости выполнять глобальную отсрочку var date;.

var d = new Date();
var h = d.getHours();
var m = d.getMinutes();
var s = d.getSeconds();
var ms = d.getMilliseconds();
var day = d.getDate();
var month = d.getMonth() + 1;
var year = d.getFullYear();  

var maindate = day + '-' + month + '-' + year + ' ' + h + ':' + m + ':' + s + '.' + ms;
var datestring = Date.parse(maindate);

console.log("Data : ", datestring);

Взгляните на момент js .com , возможно, это может быть чистым и простым решением для вас - в зависимости от вашей среды.

0 голосов
/ 08 января 2020

Как я хочу получить timestamp в результате. Я получил ответ на этот вопрос, который я отправил

Вот окончательный код, который дает мне ожидаемый результат.

  function addZero(x,n) {
  while (x.toString().length < n) {
    x = "0" + x;
  }
  return x;
}

var date;
function myFunction() {
  var d = new Date();
  var day = d.getDate();
  var month = d.getMonth() + 1; // Since getMonth() returns month from 0-11 not 1-12
  var year = d.getFullYear();
  var h = addZero(d.getHours(), 2);
  var m = addZero(d.getMinutes(), 2);
  var s = addZero(d.getSeconds(), 2);
  var ms = addZero(d.getMilliseconds(), 3);
  var maindate = year +"-" + day + "-" + month +" "+ h + ":" + m + ":" + s + "." + ms ;
   var datestring = Date.parse(maindate)
  var data = Math.random(0,1); 
  console.log("Date : ", datestring) ;
  console.log("Data : ", data);
 }

    myFunction();

Я должен был также включить значение дня, месяца и года , Что я обновил в ответе. остальная часть кода работает нормально.

0 голосов
/ 08 января 2020

Синтаксический анализ дат - это боль в JavaScript, так как нет обширной нативной поддержки. Однако вы можете сделать что-то вроде следующего, полагаясь на подпись конструктора Date (год, месяц, день [, час, минута, секунда, миллисекунда]) объекта Date.

var dateString = '17-09-2013 10:08',
    dateTimeParts = dateString.split(' '),
    timeParts = dateTimeParts[1].split(':'),
    dateParts = dateTimeParts[0].split('-'),
    date;

date = new Date(dateParts[2], parseInt(dateParts[1], 10) - 1, dateParts[0], timeParts[0], timeParts[1]);

console.log(date.getTime()); //1379426880000
console.log(date); //Tue Sep 17 2013 10:08:00 GMT-0400

Вы также можете использовать регулярное выражение с группами захвата для анализа строки даты в одной строке.

var dateParts = '17-09-2013 10:08'.match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/);

console.log(dateParts); // ["17-09-2013 10:08", "17", "09", "2013", "10", "08"]
...