问题标签 [iformatprovider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8103 浏览

vb.net - Date.Parse 使用自定义格式化程序

这似乎是一个简单的练习,但如果我能在 MSDN 或网络上的任何地方找到正确执行此操作的示例,我会很高兴的。

我们有数据馈送,一个包含指数值和日期的文件(例如标准普尔 500 指数)。日期表示为 YYYYMMDD。当然,Date.Parse() 方法不理解这种格式。

我在一个类上写了一个简单的静态方法来解析这个,没什么大不了的,但是它激怒了我的工程师,我无法弄清楚如何让 IFormatProvider 功能工作。所有示例都处理 FORMATTING 步骤,而不是 PARSING 步骤。

所以基本上,我想说:

并从 Parse 方法中获取正确的日期值。

在 CustomFormatter 上实现了 IFormatProvider 方法后,GetFormat() 方法会使用 DateTimeFormatInfo 的 System.Type 调用,但老实说,我不知道从那里做什么,因为所有示例都处理格式化,而不是解析。如果我返回一个对象(self)或 null 并不重要,我只会得到“字符串未被识别为有效的 DateTime”。

任何指针表示赞赏。谢谢。

0 投票
4 回答
477 浏览

c# - 解析日期时间

如何将 1900-01-01 00:00:00Z 解析为 DateTime 对象?

这返回了我:

1899 年 12 月 31 日下午 7:00:00

0 投票
4 回答
842 浏览

c# - 任何内置的方式来格式化 WPF 绑定?

设想

我似乎找不到使用IFormatProvider格式化 WPF 中的绑定的方法。目前我的数据源上有一个属性:

此属性绑定到 XAML 中的标签:

如您所见,它是一个数字,但格式应为 0000.00.000。目前,我们在旧的 WinForms 应用程序中为此类事情使用单独的 IFormatProvider。

问题

  • 在 WPF 中可以进行这样的格式化吗?
    • 如果是,我们首选的方法是仍然使用 IFormatProvider,也可能吗?
    • 如果没有,有什么好的选择?

提前致谢!

0 投票
3 回答
6190 浏览

.net - 我应该始终指定要使用哪个 IFormatProvider 吗?

我尝试在我们产品的一些程序集上运行 FxCop,我得到了很多匹配“指定 IFormatProvider”规则的内容。

碰巧的是,其中一些是合法的,但它也匹配如下代码:

可以写成

第二种变体更难阅读。

那么,实际上是否建议始终指定IFormatProvider或者它“只是”规则中使用的启发式的限制?

0 投票
1 回答
840 浏览

c# - C# - 以自定义日期时间格式获取 XElement.Value

这是我的问题:

我有一个XElement存储 a DateTime,我想获取DateTime以自定义格式返回的 Value 属性。
我想知道是否有办法IFormatProviderXElement.

0 投票
2 回答
4297 浏览

c# - 带有自定义 DateTimeFormatInfo 的 DateTime.Parse 引发异常

为什么这段代码会抛出异常?

0 投票
2 回答
1481 浏览

c# - 关于 iCustomFormatter 问题的 String.Format 与 int.ToString

我有以下两行代码:

而 BadResult 显然是坏的,而 GoodResult 是好的。我的 CustomFormatter 类是这样声明的:(还有一个我觉得相关的函数):

问题本身,当我以“良好的结果”运行代码行时,GetFormat 函数正在请求 CustomFormatter 的实例。

每当它用 Float.Tostring() 调用时,它都需要一个 NumberFormatInfo 的实例。

我最初跳到“我的 CustomFormatter 应该来自 NumberFormatInfo”。不幸的是,班级是封闭的。

那么: 我需要做什么才能使用自定义格式化程序调用 Float.ToString()

谢谢!

0 投票
6 回答
14324 浏览

c# - 如何使用 NumberFormatInfo 删除负值的括号

我们目前正在使用以下内容在我们的 Web 应用程序中创建美元值:

在此示例中,如果 DollarValue 为 145,那么我们将看到:$145。如果是 -145,那么我们将看到 ($145) 而不是 -$145。请注意,对我们来说,dollarValue 是一个 double,但它可以是任何数字类型。我认为。

无论如何,我想要的是 145 美元或 -145 美元。

现在,根据我的研究,可以使用 NumberFormatInfo 类来做到这一点。我不知道如何使用它,也找不到任何有效的例子。我确实在这里看到了这个问题:C# Creating a custom NumberFormatInfo to display "Free" when a currency value is $0.00但是来自这个问题的 MSDN 示例似乎与我真正想做的有点不同。

我意识到,我需要做以下事情:

其中 someIFormatProvider 可能是 NumberFormatInfo 类型。现在,我所做的是:

...我得到一个“实例是只读的”异常。虽然 CurrencyNegativePattern 属性的“文档”说您可以设置和获取值,但显然您不能。此外,NumberFormatInfo 是一个密封类。我不能轻松地基于它创建一个新类并覆盖该值。

我不知道如何处理这个问题。现在,我的解决方法是否定我的负值并获得我string.Format(...)再次做的积极结果。是的,我意识到这前面没有负号,但是,当然,这很容易通过根据需要在结果前面添加“-”来解决。

有人可以为我提供一个工作示例,说明如何在这种情况下正确有效地使用 NumbefFormatInfo 类吗?谢谢。

0 投票
2 回答
5629 浏览

c# - StreamWriter 和 IFormatProvider

如何将 IFormatProvider 传递给 StreamWriter?

具体来说,我想创建一个
new StreamWriter("myfile.txt", CultureInfo.InvariantCulture);

TextWriter 和 StringWriter 在构造函数中有一个参数,但 StreamWriter 没有。
属性 stringWriter.FormatProvider 是只读的。

我可以想到三种看似糟糕的解决方案的解决方法:

  • 更改 Thread.CurrentCulture:这将在一个库中,所以我宁愿不更改任何全局设置,即使是暂时的。
  • sw.WriteLine(InvariantCulture, , ):有很多 sw.WriteLine() 超过几个函数。我真的很想避免与他们所有人搞混。
  • 首先使用 StringWriter 然后将字符串写入文件:由于流可能会变得非常大,这将产生巨大的开销。

有没有办法为 StreamWriter 指定一个 FormatProvider?基于 TextWriter 的继承,如果我可以设置属性,StreamWriter 必须具有处理此问题的方法。

0 投票
1 回答
466 浏览

c# - IEEE 1xxx 浮点格式的字符串表示形式是什么,如何输出?

我正在尝试以 VRML 2.0 使用的格式从 c# 输出浮点数。

根据vrml 规范,这是

IEEE 1xxx 浮点格式的双精度浮点数(参见 2.[IEEE])。

[IEEE]:ISO/IEC 9899:1990 编程语言——C. http://www.iso.ch/isob/switch-engine-cate.pl?searchtype=refnumber&KEYWORDS=9899 (死链接)

  • 这种格式的正确字符串表示是什么?我很难找到参考。我找到了一些关于二进制表示的解释,但没有找到关于字符串表示的解释。
  • 如何根据这种格式配置 NumberFormatInfo 或 CultureInfo ?

澄清:

我想生成一个 vrml 文件,我需要知道如何确保

根据 vrml 规范,将产生一个 100% 的数字。