Javascript格式化时间-日期fns
Javascript formatting time - Date fns
我有一个以分钟为单位存储的时间
01:30:00
我想将其显示为人类可读的 1 小时 30 分钟或 90 分钟。
实现他的最佳方法是什么我正在使用 Date fns 作为日期但无法使 getminutes() 方法正常工作,因为它需要一个完整的日期。
检查是否对您有帮助:
JS:
String.prototype.toHHMM = function () {
var sec_num = parseInt(this, 10);
var hours = Math.floor(sec_num / 3600);
var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
var seconds = sec_num - (hours * 3600) - (minutes * 60);
if (hours < 10) {hours = "0"+hours;}
if (minutes < 10) {minutes = "0"+minutes;}
if (seconds < 10) {seconds = "0"+seconds;}
return hours+'hr(s) '+minutes+' minutes';
}
然后:
alert('013000'.toHHMM());
https://codepen.io/alvaro-alves/pen/pZLwOd
您只需删除时间中的“:”即可。
let stringTime = '1:30:20';
let date = new Date (null, null, null, parseInt (stringTime.split(':')[0]), parseInt (stringTime.split(':')[1]), parseInt (stringTime.split(':')[2]));
let readiableTime = (((date.getHours()) ? date.getHours() + 'H' : '') + ' ' + (date.getMinutes() ? date.getMinutes() + 'm' : '')).trim();
console.log (readiableTime);
答案:1H 30m
您可以使用合适的方法拆分成部分并格式化。您在 parser/formatter 中构建了多少功能取决于您想要支持多少种不同的输入和输出格式。
您可以写一个更通用的 parser/formatter,但是如果您只需要支持一种格式,那么应该做一些简单的事情,例如
function formatTime(v) {
var [h,m,s] = v.split(':').map(Number);
return (h? h + ' hour' + (h != 1? 's' : '') : '') +
(m? ' ' + m + ' minute' + (m != 1? 's' : '') : '') +
(s? ' ' + s + ' second' + (s != 1? 's' : '') : '');
}
['01:30:00', '21:01:05', '00:10:01', '16:00:08'].forEach(v =>
console.log(v + ' => ' + formatTime(v))
);
我有一个以分钟为单位存储的时间
01:30:00
我想将其显示为人类可读的 1 小时 30 分钟或 90 分钟。
实现他的最佳方法是什么我正在使用 Date fns 作为日期但无法使 getminutes() 方法正常工作,因为它需要一个完整的日期。
检查是否对您有帮助:
JS:
String.prototype.toHHMM = function () {
var sec_num = parseInt(this, 10);
var hours = Math.floor(sec_num / 3600);
var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
var seconds = sec_num - (hours * 3600) - (minutes * 60);
if (hours < 10) {hours = "0"+hours;}
if (minutes < 10) {minutes = "0"+minutes;}
if (seconds < 10) {seconds = "0"+seconds;}
return hours+'hr(s) '+minutes+' minutes';
}
然后:
alert('013000'.toHHMM());
https://codepen.io/alvaro-alves/pen/pZLwOd 您只需删除时间中的“:”即可。
let stringTime = '1:30:20';
let date = new Date (null, null, null, parseInt (stringTime.split(':')[0]), parseInt (stringTime.split(':')[1]), parseInt (stringTime.split(':')[2]));
let readiableTime = (((date.getHours()) ? date.getHours() + 'H' : '') + ' ' + (date.getMinutes() ? date.getMinutes() + 'm' : '')).trim();
console.log (readiableTime);
答案:1H 30m
您可以使用合适的方法拆分成部分并格式化。您在 parser/formatter 中构建了多少功能取决于您想要支持多少种不同的输入和输出格式。
您可以写一个更通用的 parser/formatter,但是如果您只需要支持一种格式,那么应该做一些简单的事情,例如
function formatTime(v) {
var [h,m,s] = v.split(':').map(Number);
return (h? h + ' hour' + (h != 1? 's' : '') : '') +
(m? ' ' + m + ' minute' + (m != 1? 's' : '') : '') +
(s? ' ' + s + ' second' + (s != 1? 's' : '') : '');
}
['01:30:00', '21:01:05', '00:10:01', '16:00:08'].forEach(v =>
console.log(v + ' => ' + formatTime(v))
);