如何使用 CultureInfo 格式化已弃用的货币?

2023-12-23

在 dotnet 中,以特定于文化的方式格式化货币的推荐方法是(据我所知):

using System.Globalization
var info = CultureInfo.GetCultureInfo("en-GB")
return string.Format(info, "{0:c}", 1234.5678)

这将返回:

 £1,234.57

然而。这里没有给出具体的货币。因此,如果英国转换为欧元,同样的方法会突然返回类似以下内容:

 € 1,234.57

这刚刚发生在拉脱维亚。今年,它转换为欧元。各种系统都包含以拉特和欧元为单位的金额。我需要能够打印和格式化旧货币。我需要确保也可以处理新货币。这种格式不仅与符号有关,还与放置(之前、之后、有或没有空格)和本地数字格式(小数分隔符和千位分隔符)有关。

我们数据库中的每个金额都有一种货币(例如欧元)和相应的文化(例如nl-NL)。欧元金额的格式有所不同,具体取决于它们来自我们的德国还是荷兰办事处。 (他们都使用欧元,但金额格式不同)

  • dotnet 是否提供对旧货币的访问?
  • 编写格式化金额的面向未来的方法是什么?

现在,我能想到的唯一方法是将文化数据库复制到我的数据库中。


您可以创建一个自定义CultureInfo http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo%28v=vs.110%29.aspx (by cloning http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.clone%28v=vs.110%29.aspx一个和修改)使用不同的货币符号/格式(即设置其NumberFormat http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.numberformat%28v=vs.110%29.aspx到另一个实例NumberFormatInfo http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo%28v=vs.110%29.aspx).

然后通过这个CultureInfo根据需要格式化函数。

正如问题的评论所指出的,.NET(以及一般的 Windows)不提供历史数据(时区也类似,但有一个图书馆 https://code.google.com/p/noda-time/)。在您需要的情况下,您需要自己保存足够的数据。

记住ISO-4217 http://en.wikipedia.org/wiki/ISO_4217在此类更改下,货币代码不会重复使用,因此根据金额保留货币代码可以让您正确设置格式。此外,仅仅因为一个国家以一种方式格式化其货币金额并不意味着每个国家都这样做。例如。 25 法郎在英国为“FF25.00”,但在其他地区为“25FF00”或“FF25,00”。 (编辑:我注意到您涵盖了问题中的最后一段。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 CultureInfo 格式化已弃用的货币? 的相关文章

随机推荐

  • 一年中使用 iPhone SDK 的天数?

    我正在尝试获取当年的天数 当我尝试解决方案时当月有多少天使用 iPhone SDK https stackoverflow com questions 1179945 number of days in the current month
  • 如何检测我的应用程序是否在兼容模式下运行? [复制]

    这个问题在这里已经有答案了 可能的重复 如何检测真实的 Windows 版本 https stackoverflow com questions 57124 how to detect true windows version 我有一个使用
  • 未解析的外部符号 LNK2019

    首先 我知道这个问题遍布整个网站 但我几乎浏览了所有问题 似乎无法找出问题所在 这是 VS 2012 中的 谢谢 Socket h pragma once include
  • 将一个片段替换为活动组内的另一个片段

    我在小组活动中有一个片段 我想用另一个片段替换它 FragmentTransaction ft getActivity getFragmentManager beginTransaction SectionDescriptionFragme
  • 如何在 C# 中以编程方式生成按键事件?

    如何以编程方式创建一个模拟键盘上按键的事件 该问题标记为 WPF 但到目前为止的答案是特定的 WinForms 和 Win32 要在 WPF 中执行此操作 只需构造一个 KeyEventArgs 并在目标上调用 RaiseEvent 即可
  • gcc 中的 -ffreestand 选项是什么?

    What is ffreestanding在海湾合作委员会 它是干什么用的 我遇到了以下情况 gcc ffreestanding m32 c kernel c o kernel o 并且不明白 这到底是什么意思 A freestanding
  • 如何找出 SQL Server 中哪些表访问最多或使用最频繁

    我目前的情况是 我需要找出哪些表被频繁使用 或者在给定的一段时间内我们的应用程序中使用的次数 假设从某个开始日期到结束日期 我想在这里获得的详细信息是表名及其被访问的次数 例如 tableName No Of Access Table5 1
  • 如何在 MVVM WPF 应用程序中取消窗口关闭

    单击 取消 按钮 或右上角的 X 或 Esc 后如何取消从特定表单退出 WPF
  • FlashDevelop Haxe (Flash) 调试器

    FlashDevelop中有Haxe的调试器吗 FlashDevelop 现在附带一个运行良好的 Haxe 调试器 仅限 Flash 目标
  • 是否可以在 Web 浏览器上运行与 SDL+OpenGL 代码绑定的 C++?

    我的客户希望她的网站有一个渲染 3D 的应用程序 浅 3D 的东西 我们在 3D 世界中只绘制平面正方形 但网络编程不是我的专长 所以我正在寻找可以从网络浏览器运行 C 程序的东西 但我想 如果是这样的话 那么客户端必须先下载程序 而这不是
  • 根据用户选择禁用单选按钮

    我有 2 组单选按钮 每组有 4 个选项 这 4 个选项在两个类别中都是相同的 我不想允许在两个类别中进行相同的选择 例如 如果在第一类别中选择选项 1 则用户现在只能从第二类别中的选项 2 3 4 中进行选择 这个问题之前已经被问过 但似
  • 从设置禁用权限并返回到我们的应用程序后崩溃

    当当前 Activity 跳转到系统设置页面禁用权限然后再次切换当前 Activity 时 应用程序崩溃 第 1 步 打开应用程序并授予所有必要的权限 第 2 步 单击 主页 按钮 因此应用程序处于后台 第 3 步 在 设置 中手动更改权限
  • “电子邮件不能为空”使用用户名或电子邮件设计

    我正在关注这个操作方法如何 允许用户使用用户名或电子邮件地址登录 https github com plataformatec devise wiki How To Allow users to sign in using their us
  • 如何使用 ASP.NET MVC + SignalR 强制服务器不断发送事件数据?

    ExportClient班级有OnTickRecieved事件 这可以帮助我接收一些数据 来自市场的出价 我想要的只是在浏览器中的图表上实时接收这些数据 当我按下GoUI 端的按钮 它调用Go 控制器中的方法 然后什么也没有发生 这是合乎逻
  • 棘手的指针问题

    我在过去的关于 c 中指针的考试问题上遇到了麻烦 这是我从这个链接找到的 http www cl cam ac uk teaching exams pastpapers y2007p3q4 pdf http www cl cam ac uk
  • Task.ContinueWith() 父任务不等待子任务完成[重复]

    这个问题在这里已经有答案了 自从我了解Task在嵌套任务的上下文中 我真的不明白 为什么在第二次打印之前进行第三次打印 尽管我已经用过Task WaitAll t 它打印3rd之前一行2nd line Code public static
  • 修改 LESS 变量的 alpha 不透明度

    使用 LESS 我知道我可以更改颜色变量的饱和度或色调 看起来像这样 background lighten blue 20 不过 我想改变颜色的 alpha 不透明度 最好是这样的 background alpha blue 20 有没有一
  • SQL:如何将视图与表连接?

    UPDATED 我正在使用 MySQL 语句创建视图 如果编辑寄出的图书超过 50 本书 我需要显示他们的名字 姓氏和城市 我的三张表是 create table editors ed id char 11 ed lname varchar
  • 禁用 VS Code 中的特定编译器警告

    我想知道如何抑制 VS Code 中的特定编译器警告对于整个项目 我见过这个问题 是否可以禁用特定的编译器警告 https stackoverflow com questions 22536518 is it possible to dis
  • 如何使用 CultureInfo 格式化已弃用的货币?

    在 dotnet 中 以特定于文化的方式格式化货币的推荐方法是 据我所知 using System Globalization var info CultureInfo GetCultureInfo en GB return string