簡體   English   中英

如何在javascript中格式化貨幣和時間

[英]How to format currency and time in 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')

要根據您的期望輸出格式化貨幣,您需要使用帶有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>

函數名稱具有誤導性,它們不驗證僅對其進行格式化的值。

要將格式設置為貨幣,您可以使用帶或不帶貨幣符號的Intl.NumberFormat 它可以通過toLocaleString 使用

 [1, 10000, 1.23e4, 1.2].forEach(v => console.log( // With currency a symbol v + ' -> ' + v.toLocaleString('en',{style: 'currency', currency: 'JPY'}) + '\\n' + // As number v + ' -> ' + v.toLocaleString('en',{minimumFractionDigits: 2, maximumFractionDigits: 2}) ) );

使用字符串方法根據需要格式化時間是相當簡單的:

 function formatTime(v) { v = String(v).replace(/\\D/g,'').padStart(2, '0').padEnd(4, '0'); return v.substring(0,2) + ':' + v.substring(2,4); } ['1','01','0101','010203','foobar', NaN].forEach(s => console.log(s + ' -> ' + formatTime(s)));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM