我想用JavaScript格式化价格.
我想要一个函数,它接受一个float参数并返回如下string格式:
"$ 2,500.00"
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?
我正在开展一个项目,我必须处理很多日期和时间.服务器端技术是ASP.Net,在客户端我使用jQuery和jQuery Week Calendar(一个jQuery插件).
所以这里描述的问题是,我从2012-11-13T04:45:00.00GMT格式的服务器接收数据时间.
现在在客户端,我希望将此日期时间转换为区域设置日期时间格式,就像IST,EST,PKT等一样.
为实现这一点,我使用的是JavaScript方法toLocaleString().这仅适用于Chrome,在其他浏览器中工作不一致.
以下是不同浏览器的输出:
谷歌浏览器(工作正常):
呼叫:
new Date ("2012-11-13T04:45:00.00").toLocaleString();
Run Code Online (Sandbox Code Playgroud)
输出:
Tue Nov 13 2012 10:15:00 GMT+0530 (India Standard Time)
Run Code Online (Sandbox Code Playgroud)
火狐浏览器:
呼叫:
new Date ("2012-11-13T04:45:00.00").toLocaleString();
Run Code Online (Sandbox Code Playgroud)
输出:
Tuesday, November 13, 2012 4:45:00 AM
Run Code Online (Sandbox Code Playgroud)
苹果浏览器:
呼叫:
new Date ("2012-11-13T04:45:00.00").toLocaleString();
Run Code Online (Sandbox Code Playgroud)
输出:
Invalid Date
Run Code Online (Sandbox Code Playgroud)
IE浏览器:
呼叫:
new Date ("2012-11-13T04:45:00.00").toLocaleString();
Run Code Online (Sandbox Code Playgroud)
输出:
Tuesday, November 13, 2012 4:45:00 AM
Run Code Online (Sandbox Code Playgroud)
目前这些是我测试过的浏览器.
这是问题:
我需要一种方法将数据时间(具有这样的格式2012-11-13T04:45:00.00)转换为区域设置日期和时间,无论哪个浏览器客户端正在使用.
我一直在寻找到现场了解数字格式的javascript和发现是Number.toLocaleString通过扩展 Intl.NumberFormat似乎是这个问题解决好。
特别是我更喜欢在已经实现的特定于语言环境的格式的抽象之上进行构建,而不是重新发明轮子并为已经解决的问题提出另一种解决方案。
所以我调用Number.toLocaleString了一些不同的 javascript 环境,发现货币格式似乎发生了变化:
(5).toLocaleString('fr-CH', {currency: 'CHF', style: 'currency'});
// Node v10.15.1: 'CHF 5.00'
// Node v12.1.0: '5.00 CHF'
// Firefox 66.0.2: '5.00 CHF'
// Chrome 73.0.…: '5.00 CHF'
// Safari 12.0.3: '5.00 CHF'
// IE 11: '5.00 fr.'
Run Code Online (Sandbox Code Playgroud)
CHFin的格式fr-CH似乎在节点版本10和12.CHF至少在 1997 年左右之前放置了数量。这使得CHF对于大多数当前浏览器似乎不同的位置尤其令人困惑。我想知道和理解:
CHF在这些情况下的位置不同?
CHF …javascript ×3
currency ×2
datetime ×1
formatting ×1
icu ×1
jquery ×1
localization ×1
react-native ×1
unicode ×1