問題タブ [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 や Web 上のどこかで正しく実行する例を見つけることができれば、私は気が遠くなるでしょう。

データ フィード、インデックス値と日付を含むファイル (たとえば、S&P 500 など) があります。日付は YYYYMMDD で表されます。もちろん、Date.Parse() メソッドはこの形式を理解していません。

これを解析するためにクラスに単純な静的メソッドを書きましたが、大したことではありませんが、IFormatProvider 機能を動作させる方法がわからなくてエンジニアを苛立たせています。すべての例は、PARSING ステップではなく、FORMATTING ステップを扱っています。

だから基本的に、私は言うことができるようになりたいです:

Parse メソッドから正しい日付値を取得します。

CustomFormatter に IFormatProvider メソッドを実装すると、DateTimeFormatInfo の System.Type で GetFormat() メソッドが呼び出されますが、すべての例が解析ではなく書式設定を扱っているため、そこから何をすべきか正直わかりません。オブジェクト (self) を返すか null を返すかは関係ありません。単純に「文字列は有効な DateTime として認識されませんでした」というメッセージが表示されます。

任意のポインタをいただければ幸いです。ありがとう。

0 投票する
4 に答える
477 参照

c# - 日時の解析

1900-01-01 00:00:00Z をどのように解析して DateTime オブジェクトにするのでしょうか?

これは私を返します:

1899/12/31 午後 7:00:00

0 投票する
3 に答える
6190 参照

.net - 使用する IFormatProvider を常に指定する必要がありますか?

私たちの製品のいくつかのアセンブリで FxCop を実行しようとしましたが、"Specify IFormatProvider" ルールに非常に多くの一致が得られました。

たまたま、それらのいくつかは正当なものですが、次のようなコードにも一致します。

次のように書くことができます

2 番目のバリアントは、はるかに読みにくいものです。

では、常に指定することが実際に推奨IFormatProviderされるのでしょうか、それともルールで使用されるヒューリスティックの「単なる」制限なのでしょうか?

0 投票する
1 に答える
840 参照

c# - C# - カスタム日時形式で XElement.Value を取得する

これが私の問題です:

XElement保存していて、カスタム形式で をDateTime返す Value プロパティを取得したいと考えています。 に a を含める方法があるかどうか疑問に思っていました。DateTime
IFormatProviderXElement

0 投票する
2 に答える
4297 参照

c# - カスタム DateTimeFormatInfo を使用した DateTime.Parse は例外をスローします

このコードが例外をスローするのはなぜですか?

0 投票する
2 に答える
1481 参照

c# - iCustomFormatterの問題に関するString.Formatとint.ToString

次の2行のコードがあります。

一方、BadResultは明らかに悪いものであり、GoodResultは良いものです。私のCustomFormatterクラスは次のように宣言されています:(また、私が関連していると感じる1つの関数を使用して):

問題自体は、「良好な結果」でコード行を実行すると、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クラスを使用してこれを行うことが可能かもしれません。使い方がわからず、有効な例も見つかりません。私はここでこの質問を見ました:通貨値が$ 0.00のときに「無料」を表示するカスタムNumberFormatInfoを作成するC#ですが、この質問からリンクされている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 は読み取り専用です。

悪い解決策のように思える 3 つの回避策を考えることができます。

  • 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% の数値が得られます。