我一直在为HH:MM:SS使用这个优秀的功能,但我怎么能修改它以仅返回HH:MM,其中秒被截断或舍入。
function formatSeconds(seconds)
{
var date = new Date(1970,0,1);
date.setSeconds(seconds);
return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
}
答案 0 :(得分:3)
function formatSeconds(seconds)
{
var date = new Date(1970,0,1);
date.setSeconds(seconds);
return date.toTimeString().replace(/.*?(\d{2}:\d{2}).*/, "$1");
}
删除最后一个\d{2}
并在第一个?
后添加*
答案 1 :(得分:1)
使用Date格式化秒数的问题在于它无法处理超过24小时的时间和日期的变幻莫测。只需根据需要重新格式化值:
function formatSeconds(seconds) {
function z(n) {return (n < 10 ? '0' : '') + n;}
return z(seconds / 3600 | 0) + ':' + z((seconds % 3600) / 60 | 0)
}
// Some examples
[0,1,61,3600,3660,765467].forEach(function (seconds) {
console.log(seconds + ' -> ' + formatSeconds(seconds))
});
没有日期,没有正则表达式,没有库,没有依赖关系,并且在每个支持ECMAScript的主机中都有效。
答案 2 :(得分:0)
虽然理想的方法是使用moment.js
但是如果你想使用自定义功能,你可以尝试这样的事情:
function formatSeconds(milliseconds, format) {
var dateObj = new Date(milliseconds);
function getDoubleDigits(value){
return ("0" + value).slice(-2)
}
var o = {
DD: getDoubleDigits(dateObj.getDate()),
MM: getDoubleDigits(dateObj.getMonth() + 1),
YY: dateObj.getYear(),
YYYY: dateObj.getFullYear(),
hh: getDoubleDigits(dateObj.getHours()),
mm: getDoubleDigits(dateObj.getMinutes()),
ss: getDoubleDigits(dateObj.getSeconds())
}
var dilimeter = format.match(/[^\w]/)[0];
return format.split(dilimeter).map(function(f){
return o[f];
}).join(dilimeter);
}
var today = new Date();
console.log(formatSeconds(+today, "DD-MM-YYYY"))
console.log(formatSeconds(+today, "hh:mm"))
&#13;