如何使用javascript从date转换为unix_timestamp

时间:2012-03-20 02:42:14

标签: javascript mysql date timestamp unix-timestamp

我有一个时间字符串,格式为YYYY-MM-DD hh:mm:ss

我想将它转换为使用Javascript将date-string传递到mysql unix_timestamp函数的等价物。

我尝试解析日期并将其传递到Date.UTC()函数,但它似乎给了我不同的时间然后我想要的。帮助

4 个答案:

答案 0 :(得分:2)

如果您要提供UTC时间戳并且需要自1970年1月1日起的秒数,那么:

[...]

修改

重新审视我的原始答案,并不喜欢它,以下情况更好:

// 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);
}

如果应该包含十进制秒,则需要更多的努力才能将小数部分转换为ms。

答案 1 :(得分:0)

Convert a Unix timestamp to time in 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; 

答案 2 :(得分:0)

不确定这是否有帮助。但请记住,您可以使用UNIX_TIMESTAMP(DateTime)函数在MySQL中执行此操作。您还可以使用另一种方法将unix时间戳转换为DateTimes:FROM_UNIXTIME(UnixTimestamp)

希望这有帮助!

答案 3 :(得分:0)

您是否尝试使用.getTime()构建日期对象?这可能就是你想要的。

例如:Math.round(新日期('2012-03-19 21:01:54')。getTime()/ 1000)