Javascript格式化时间-日期fns

Javascript formatting time - Date fns

我有一个以分钟为单位存储的时间

01:30:00

我想将其显示为人类可读的 1 小时 30 分钟或 90 分钟。

实现他的最佳方法是什么我正在使用 Date fns 作为日期但无法使 getminutes() 方法正常工作,因为它需要一个完整的日期。

https://date-fns.org/v1.28.0/docs/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))
);