Javascript原型函数:十进制时间值到一个时间字符串

在我目前正在使用JavaScript的项目中,我使用的是十进制格式,因此更容易计算而不是在字符串中使用小时/分钟格式(日历相关项目).要在用户屏幕上显示时间,时间码必须显示为hh:mm.

我认为使用String原型函数会很好,因为它允许我使用如下代码

var time = 8.75;
document.write("Meeting at "+time.toTime()); // writes: Meeting at 8:45

到目前为止,我已经完成了这项工作,使用:

String.prototype.toTime = function(){
    var hrs = this.toString().slice(0,this.indexOf("."));
    var min = Math.round(this.toString().slice(this.indexOf("."))/100*60);
    min = min<10 ? "0"+min : min.toString();
    return hrs+":"+min;
}

但问题是,只有当变量time是一个字符串时,这才会起作用.否则会产生未定义的错误.

是否有任何方法可以将原型应用于JavaScript中的不同对象,这样我就不必使用time.toString().toTime()?

谢谢!

最佳答案
首先,您可以添加Number原型.许多人会警告不要修改原型,这在许多情况下是合理的.如果第三方脚本有可能与您一起运行,则修改原型是一种危险.

其次,我使用模数和楼层来简化你的代码,以计算小时和分钟……

Number.prototype.toTime = function(){
  var hrs = Math.floor(this)
  var min = Math.round(this%1*60)
  min = min<10 ? "0"+min : min.toString();
  return hrs+":"+min;
}

var time = 8.25;
console.log("Meeting at "+time.toTime());

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...