- - PR -
C#で和暦が扱いたい!!
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-08-08 10:40
C#でコンポーネントを開発しているのですが、
DataTime型の値を、和暦表示させたいと思っています。 CultureInfoとJapaneseCalendarの組み合わせで、 平成などの元号を表示させることは出来たのですが、 H14/08/08などの記号での和暦表示ができませんでした コンポーネントなので、埋め込みはしたくないので 解決できればと思っています。 Convertで和暦からの変換もできていますので 何とかすれば取れるんではないのかと 期待しているのですが よろしくお願いします。 | ||||||||
|
投稿日時: 2002-08-08 14:52
ms-help://MS.VSCC/MS.MSDNQTR.2002JUL.1041/cpref/html/frlrfsystemglobalizationjapanesecalendarclasstopic.htm
こんなところですかね? | ||||||||
|
投稿日時: 2003-02-12 12:03
いつも大変参考にさせて頂いております_(_^_)_
さて、私もME-5501さん同様のところでつまづいております。 平成・昭和・大正ではなく、H・S・Tの取得方法が分かりません。 Parseも調べたのですが、取得というより判別だと思いました。 個人的にはCultureInfoコンストラクタに与える"ja-JP"の部分が×なのか、と。 試しにjaのニュートラルカルチャを与えてみましたが、駄目でした。 他を見渡してみても使えそうなものが見当たりません。。。 和暦(H・S・T)を使用するシステムも多いと思いますが、 皆さんはDBや外部ファイルから取得されているのでしょうか? どうぞ、参考になる情報がございましたらお教え下さい、よろしくお願い致します_(_^_)_ | ||||||||
|
投稿日時: 2003-02-12 19:23
Jittaさん 情報ありがとうございました。
返事が遅くなってしまいまして、申し訳ございませんでした。 私も、和暦を扱うところで躓いてしまって 最終的にはシェアードソース? まで調査してみました。 結果を話せは、直接の取得は無理っぽい感じがしました。 そこで強引ですが、以下のような考え方で変換を行いました。 A〜Zで日付を仮想的に作成して(A01/01/01)、強制的に日付型 に変換します。変換できたものを使用できる和暦の記号と判断して、 その情報から和暦記号を表示するようにしました。 実際に作成したコードはもう少しスマートでGetEra? 見たいな メソッドを利用したと思います。 自宅に帰れば、ソースコードがありますので、私のHPの方から 問い合わせていただければ、実際に書いたソースを送りますけど・・・ | ||||||||
|
投稿日時: 2003-02-13 10:12
ME-5501さん、情報ありがとうございます。 確かに強引ですが、自分にはそういう発想は出来なかったので、目からウロコです) 仮想日付をEraと対応させようと思えば、強制変換日付でソートすれば良い訳 ですから、光が見えた気がします。 ただ、IsDateやParseなどで英字和暦を認識する以上どこかに保持 (オブジェクト化)されているはずなのに、参照出来ないとは・・・(><) 今後も引き続き取得方法が別にあるようでしたらば、情報お待ちしております。 あれば、リファクタリングしたいですもんね♪ | ||||||||
|
投稿日時: 2003-02-13 19:55
あんな方法でよかったのでしょうか? 英字和暦の情報がどこにあるかは分かっています。 デバッグ実行中にDateTimeFormatInfo変数の中身を確認してください。 そこに欲しい情報がたくさん詰まっていますよ。 ただ、取得が出来ないんですよね。 (取る方法はあるのかな?) もう少し時間が取れたら、今使っているロジックを公開用に修正して、 ここの掲示板にもアップしたいと考えているのですが、必要でしょうか? #DataTime型っていったい… #DBNull(or null)と普通の値が入る型だったらいいのになぁ | ||||||||
|
投稿日時: 2003-02-14 10:11
どもバッチリです♪ ローカルウィンドウを使えばいいなんて初歩的な事に気づきませんでした(^^; んで、ローカルウィンドウで「それ」に該当する情報を見つけました&取得出来ました!! DateTimeFormatInfoクラスのAbbreviatedenglishEraNamesプロパティです(密かに) なんやあるやん!!って思って、隠しGetAbbreviatedenglishEraNameメソッドなんて あったらなぁ〜って試してみたら・・・やっぱりありません(笑) どうやら「AbbreviatedenglishEraNames」は、0〜の配列を保持しているだけのようで Era(Integer)とは無縁のようです。 GetEraメソッドは漢字、英字お構いなくEra(Integer)を正しく認識して返すようですので これらと組合わせれば、厳密なGetAbbreviatedenglishEraNameメソッドを用意出来そうです。 以上です、隊長!! #DateTimeFormatInfoクラスを拡張しちゃれっ!と思ったらNotInheritableでした・・・ |
1