Как конвертировать из даты в unix_timestamp, используя JavaScript - PullRequest
1 голос
/ 20 марта 2012

У меня есть строка времени в следующем формате YYYY-MM-DD hh:mm:ss.

Я хотел бы преобразовать его в эквивалент передачи строки даты в функцию mysql unix_timestamp с использованием Javascript.

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

Ответы [ 4 ]

2 голосов
/ 20 марта 2012

Если вы предоставляете метку времени UTC и хотите секунды с 01.01.1970, то:

[...]

Редактировать

Пересмотрел мой оригинальный ответ и мне не понравилось, лучше следующее:

// Given an ISO8601 UTC timestamp, or one formatted per the OP,
// return the time in seconds since 1970-01-01T00:00:00Z
function toSecondsSinceEpoch(s) {
  s = s.split(/[-A-Z :\.]/i);
  var d = new Date(Date.UTC(s[0], --s[1], s[2], s[3], s[4], s[5]));
  return Math.round(d.getTime()/1000);
}

Обратите внимание, что строка в OP не совместима с ISO8601, но приведенная выше будет работать с ней. Если временная метка находится в местном часовом поясе, то:

// Given an ISO8601 timestamp in the local timezone, or one formatted per the OP,
// return the time in seconds since 1970-01-01T00:00:00Z
function toSecondsSinceEpochLocal(s) {
  s = s.split(/[-A-Z :\.]/i);
  var d = new Date(s[0],--s[1],s[2],s[3],s[4],s[5]);
  return Math.round(d.getTime()/1000);
}

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

0 голосов
/ 20 марта 2012

Не уверен, поможет ли это.Но помните, что вы можете сделать это в MySQL, используя функцию UNIX_TIMESTAMP (DateTime) .У вас также есть другая функция, которая превращает метки времени Unix в DateTimes: FROM_UNIXTIME (UnixTimestamp) .

Надеюсь, это поможет!

0 голосов
/ 20 марта 2012

Вы пытались построить объект даты, затем используя .getTime ()? Это, вероятно, то, что вы хотите.

Например: Math.round (новая дата ('2012-03-19 21:01:54'). GetTime () / 1000)

0 голосов
/ 20 марта 2012

Преобразование метки времени Unix в время в JavaScript уже решило проблему ...

// create a new javascript Date object based on the timestamp 
// multiplied by 1000 so that the argument is in milliseconds, not seconds 
var date = new Date(unix_timestamp*1000); 
// hours part from the timestamp 
var hours = date.getHours(); 
// minutes part from the timestamp 
var minutes = date.getMinutes(); 
// seconds part from the timestamp 
var seconds = date.getSeconds(); 

// will display time in 10:30:23 format 
var formattedTime = hours + ':' + minutes + ':' + seconds; 
...