- PR -

IsDate関数でエラーが出るのですが

投稿者投稿内容
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2007-05-01 15:08
引用:

R・田中一郎さんの書き込み (2007-05-01 15:01) より:
IFormatProvider で見事に回避できますね。


それは回避じゃないです。
Invariant なカルチャを使った場合、例えば「平成5年3月6日」を Parse できません。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2007-05-01 16:11
引用:

Hongliangさんの書き込み (2007-05-01 15:08) より:

引用:

R・田中一郎さんの書き込み (2007-05-01 15:01) より:
IFormatProvider で見事に回避できますね。


それは回避じゃないです。


例外エラーを回避できる、という意味で使ったつもりだったのですが、不適当な表現でしたね。

引用:

Hongliangさんの書き込み (2007-05-01 15:08) より:

Invariant なカルチャを使った場合、例えば「平成5年3月6日」を Parse できません。


確認してみました。
DateTimeFormatInfo info = new CultureInfo("ja-JP").DateTimeFormat;
なら、Parse できますね。
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-05-01 16:17
引用:

R・田中一郎さんの書き込み (2007-05-01 16:11) より:


ん? Hongliang さんのご指摘を何か勘違いしておりませんか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2007-05-02 09:30
引用:

じゃんぬねっとさんの書き込み (2007-05-01 16:17) より:

ん? Hongliang さんのご指摘を何か勘違いしておりませんか?


本当ですね。

コード:
using System;
using System.Globalization;
 :
string s = "0.1m3";
DateTimeFormatInfo dtf2 = new CultureInfo("ja-JP").DateTimeFormat;
Console.WriteLine(DateTime.TryParse(s, dtf2, DateTimeStyles.None, out dt));


確かに、IFormatProvider を使っても、例外エラーが発生しました。

試しに、"平成5年3月6日"で実行してみた結果・・・

コード:
using System;
using System.Globalization;
 :
string s = "平成5年3月6日";
DateTime dt;

Console.WriteLine(DateTime.TryParse(s, out dt));

DateTimeFormatInfo dtf1 = new DateTimeFormatInfo();
Console.WriteLine(DateTime.TryParse(s, dtf1, DateTimeStyles.None, out dt));

DateTimeFormatInfo dtf2 = new CultureInfo("ja-JP").DateTimeFormat;
Console.WriteLine(DateTime.TryParse(s, dtf2, DateTimeStyles.None, out dt));



true, false, true の順に出力されました。この結果も期待したものとは異なります。
混乱してきました・・・
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2007-05-02 10:09
スレ主でもないのに、あれこれ聞くのにはためらいがあったのですがモヤモヤ感が続くのも嫌なので。

じゃんぬさんが指摘してくれたのは、

Parse と ParseExact の比較

ということなんですね。

知りませんでした。勉強になります。
ありがとうございます。

ちなみに、西暦と和暦を変換するには?なんかも参考にしました。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2007-05-03 20:03
引用:

R?田中一郎さんの書き込み (2007-05-02 09:30) より:

true, false, true の順に出力されました。この結果も期待したものとは異なります。
混乱してきました???


どんな結果を期待しててどう期待と違うんでしょう?
っていうか、何に疑問を感じてるんでしょうか?
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2007-05-07 10:34
引用:

なちゃさんの書き込み (2007-05-03 20:03) より:

っていうか、何に疑問を感じてるんでしょうか?



確かに、疑問点が不明確でしたね。
先の「new DateTimeFormatInfo()」を用いた場合に限って、"0.1m3"という文字列で例外エラーが発生しない理由が理解できません。

どこのカルチャとして扱われるのでしょうか?
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2007-05-07 10:41
DateTimeFormatInfo コンストラクタ (System.Globalization)

スキルアップ/キャリアアップ(JOB@IT)