javascript - 如何在javascript中设置货币和时间的格式

标签 javascript regex

我无法获取货币和工作时间的格式。

货币是返回小数点左边至少一个整数,右边两个和逗号:

非数字(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')

要根据您想要的输出格式化货币,您需要使用带有 minimumFractionDigits = 2 参数的 Intl.NumberFormat 函数。

我为此添加了一个代码片段,我在以下片段上使用您想要的输出进行格式化。

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>

关于javascript - 如何在javascript中设置货币和时间的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60689698/

相关文章:

python - 如何使用正则表达式修改字符串的内容(就像 String.Replace 一样)

javascript - 在 css/js : make links on mouse over (hover) shows what is in h1 中

java - 为什么在将 String Array 转换为 int Array 时出现 NumberFormatException?

javascript - 单击功能区按钮时如何在新选项卡而不是新窗口中打开 Web 资源

javascript - 使用 import fs from 'fs'

python - 在 Python 中替换大型文本文件中的多个字符串

c# - 正则表达式:仅限 A-Z 字符

php - 查询字段包含任意顺序的给定文本字符串的表

javascript - 来自不同域的 Greasemonkey AJAX 请求?

javascript - 仅允许输入数字