javascript - 如何在javascript中格式化货币和时间
问题描述
我无法获得货币和工作时间的格式。
货币是返回小数点左边至少一个整数和小数点右边两个和逗号:
非数字 (a, a1, a1.00) 和 0 --> 0.00
1 --> 1.00
1.1 --> 1.10
9999 --> 9,999.00
我有:
$("#addCostpp").blur( function(){
$("#addCostpp").val(validateCost($(this).val()));
});
function validateCost(cost_amount){
return cost_amount.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/, '$1,$2$3')
}
返回时间为 00:00:
0(或错误,例如 a 或 aa)--> 00:00
1 --> 01:00
01 --> 01:00
01:0 --> 01:00(或者如果 : 是任何非数字,例如 01;0 或 01L0)
0101 --> 01:01
010203 --> 01:02
$("#addTimeOpen").blur( function(){
$("#addTimeOpen").val(validateTime($(this).val()));
});
function validateTime(timeString){
var formatted = "";
if (timeString.match(/^0/)){
formatted = timeString.replace(/(\d{2})(\d{2})/, "$1:$2");
}else{
formatted = timeString.replace(/(\d{1})(\d{2})/, "0$1:$2");
}
//update
return(formatted);
}
解决方案
对于您想要的货币编号输出,您需要使用以下方法,
new Intl.NumberFormat('en-IN', {minimumFractionDigits: 2})
除了您想要的时间格式外,您还需要使用moment.js
以下方式,
moment('010203', 'H:mm:ss').format('HH:mm')
要根据您的期望输出格式化货币,您需要使用Intl.NumberFormat
带minimumFractionDigits = 2
参数的函数。
我为此添加了一个代码片段,我在下面的片段中使用您想要的输出进行了格式化。
var formatter = new Intl.NumberFormat('en-IN', {minimumFractionDigits: 2});
var input1 = document.getElementById('input1').innerHTML;
var input2 = document.getElementById('input2').innerHTML;
var input3 = document.getElementById('input3').innerHTML;
document.getElementById('result1').innerHTML = formatter.format(input1);
document.getElementById('result2').innerHTML = formatter.format(input2);
document.getElementById('result3').innerHTML = formatter.format(input3);
function formatTime( cTime ){
var formattedTime;
if(cTime.length === 1 || cTime.length === 2){
formattedTime = moment(cTime, 'H').format('HH:mm');
}else if(cTime.length === 3 || cTime.length === 4){
formattedTime = moment(cTime, 'H:mm').format('HH:mm');
}else if(cTime.length > 4){
formattedTime = moment(cTime, 'H:mm:ss').format('HH:mm');
}
return formattedTime;
}
var time1 = document.getElementById('time1').innerHTML;
var time2 = document.getElementById('time2').innerHTML;
var time3 = document.getElementById('time3').innerHTML;
var time4 = document.getElementById('time4').innerHTML;
var time5 = document.getElementById('time5').innerHTML;
document.getElementById('result_time1').innerHTML = formatTime(time1);
document.getElementById('result_time2').innerHTML = formatTime(time2);
document.getElementById('result_time3').innerHTML = formatTime(time3);
document.getElementById('result_time4').innerHTML = formatTime(time4);
document.getElementById('result_time5').innerHTML = formatTime(time5);
p{
margin-top: 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<p>
<span id="input1">1</span> <br><span id="result1"></span>
</p>
<p>
<span id="input2">1.1</span> <br><span id="result2"></span>
</p>
<p>
<span id="input3">9999</span> <br><span id="result3"></span>
</p>
<p>
<span id="time1">1</span> <br> <span id="result_time1"></span>
</p>
<p>
<span id="time2">01</span> <br> <span id="result_time2"></span>
</p>
<p>
<span id="time3">01:0</span> <br> <span id="result_time3"></span>
</p>
<p>
<span id="time4">0101</span> <br><span id="result_time4"></span>
</p>
<p>
<span id="time5">010203</span> <br> <span id="result_time5"></span>
</p>
推荐阅读
- java - 在递归方法中重置计数器
- sql - 在 SQL 数据透视表中查找每组的 MAX 值
- sql - 在 SQL Server 中,我试图计算特定客户、汽车制造商和日期的汽车租赁还车和汽车租赁取货之间的天数
- r - Selenium 消息:过时的元素引用:元素未附加到页面文档
- javascript - 如何测试从外部导入组件的功能?
- r - 如何计算不同变量的不同列数之间的最大差异
- yum - 无法运行'yum update'
- reactjs - 导航器缺少导航道具。在 react-navigation 中,您必须直接设置您的应用容器
- vue.js - Nuxtjs 与 i18n-iso-country
- c++ - 二进制表达式 cout 问题的无效操作数