javascript - 将十进制转换为小时和分钟 - Javascript
问题描述
我只是想不通为什么这对一些奇数值不起作用。例如,当尝试将 22.68 转换为小时和分钟时,输出为 22:40.800000000000004(甚至不应该出现秒)
if (str_HR_PER_WEEK.indexOf('.') > -1)
{
var str_HR_PER_WEEK_hrs = str_HR_PER_WEEK.substring(0 , str_HR_PER_WEEK.indexOf('.'));
var str_HR_PER_WEEK_mins = str_HR_PER_WEEK.substring(str_HR_PER_WEEK.indexOf('.') + 1);
var float_HR_PER_WEEK_mins = parseFloat("0." + (str_HR_PER_WEEK_mins), 10);
var float_HR_PER_WEEK_mins_actual = float_HR_PER_WEEK_mins * 60;
float_HR_PER_WEEK_mins_actual = float_HR_PER_WEEK_mins_actual.toString();
tables.CURRENT_EMPLOYEES.HOURS_PER_WEEK.value = getTwoDigitTime(str_HR_PER_WEEK_hrs) + ":" + getTwoDigitTime(float_HR_PER_WEEK_mins_actual);
}
else
{
tables.CURRENT_EMPLOYEES.HOURS_PER_WEEK.value = str_HR_PER_WEEK;
}
解决方案
你必须有方法来实现这一点,
一,自己计算:
var decimalTimeString = "1.6578";
var decimalTime = parseFloat(decimalTimeString);
decimalTime = decimalTime * 60 * 60;
var hours = Math.floor((decimalTime / (60 * 60)));
decimalTime = decimalTime - (hours * 60 * 60);
var minutes = Math.floor((decimalTime / 60));
decimalTime = decimalTime - (minutes * 60);
var seconds = Math.round(decimalTime);
if(hours < 10)
{
hours = "0" + hours;
}
if(minutes < 10)
{
minutes = "0" + minutes;
}
if(seconds < 10)
{
seconds = "0" + seconds;
}
alert("" + hours + ":" + minutes + ":" + seconds);
二,使用内置函数转换为字符串,然后转换为 hh:mm
:
var decimalTimeString = "1.6578";
var n = new Date(0,0);
n.setSeconds(+decimalTimeString * 60 * 60);
n.setMinutes(+decimalTimeString * 60);
var result = n.toTimeString().slice(0, 5);
document.write(result);
推荐阅读
- r - case-when 字符串匹配
- java - 无法使用 .sh 文件运行我的 .jar 文件
- javascript - 显示来自 Codeigniter 函数的 JSON html 数据
- javascript - 为什么 Chrome 网上应用店在发布 chrome 扩展时会抛出错误
- image - 加载 PNG 图像文件以作为 Image 对象在 Vaadin Flow 布局上显示
- ruby-on-rails - Searchkick `all` 用于带有 OR 的多个数组
- java - JLabel 最初不显示
- php - 使用 AJAX 和 PHP 收集复选框值的问题
- postgresql - PostgreSQL 错误:错误:插入的目标列多于表达式
- ios - Circle Fill At 80 %