我将时间作为 Unix 时间戳存储在 MySQL 数据库中,然后发送到一些 JavaScript 代码。我如何才能抽出时间?
例如,在HH/MM/SS
格式上。
我将时间作为 Unix 时间戳存储在 MySQL 数据库中,然后发送到一些 JavaScript 代码。我如何才能抽出时间?
例如,在HH/MM/SS
格式上。
let unix_timestamp = 1549312452
// 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 = "0" + date.getMinutes();
// Seconds part from the timestamp
var seconds = "0" + date.getSeconds();
// Will display time in 10:30:23 format
var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
console.log(formattedTime);
有关 Date 对象的更多信息,请参阅MDN或ECMAScript 5 规范。
function timeConverter(UNIX_timestamp){
var a = new Date(UNIX_timestamp * 1000);
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
var year = a.getFullYear();
var month = months[a.getMonth()];
var date = a.getDate();
var hour = a.getHours();
var min = a.getMinutes();
var sec = a.getSeconds();
var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ;
return time;
}
console.log(timeConverter(0));
JavaScript 以毫秒为单位工作,因此您首先必须将 UNIX 时间戳从秒转换为毫秒。
var date = new Date(UNIX_Timestamp * 1000);
// Manipulate JavaScript Date object here...
用:
var s = new Date(1504095567183).toLocaleDateString("en-US")
console.log(s)
// expected output "8/30/2017"
和时间:
var s = new Date(1504095567183).toLocaleTimeString("en-US")
console.log(s)
// expected output "3:19:27 PM"
在新的世界里,我们应该转向标准的Intl
JavaScript 对象,它有一个方便的DateTimeFormat
构造函数和.format()
方法:
function format_time(s) {
const dtFormat = new Intl.DateTimeFormat('en-GB', {
timeStyle: 'medium',
timeZone: 'UTC'
});
return dtFormat.format(new Date(s * 1e3));
}
console.log( format_time(12345) ); // "03:25:45"
但是为了与所有传统 JavaScript 引擎 100% 兼容,这里是最短的单行解决方案,将秒格式化为hh:mm:ss
:
function format_time(s) {
return new Date(s * 1e3).toISOString().slice(-13, -5);
}
console.log( format_time(12345) ); // "03:25:45"
方法
Date.prototype.toISOString()
以简化的扩展ISO 8601格式返回时间,该格式始终为24 或 27 个字符长(即YYYY-MM-DDTHH:mm:ss.sssZ
或±YYYYYY-MM-DDTHH:mm:ss.sssZ
)。时区始终为零 UTC 偏移量。
此解决方案不需要任何第三方库,并且在所有浏览器和 JavaScript 引擎中均受支持。