我有一个时间字符串,格式为YYYY-MM-DD hh:mm:ss
。
我想将它转换为使用Javascript将date-string传递到mysql unix_timestamp函数的等价物。
我尝试解析日期并将其传递到Date.UTC()
函数,但它似乎给了我不同的时间然后我想要的。帮助
答案 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)