- - PR -
文字列として取得した日付の比較について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-10-24 15:39
文字列として取得した日付の比較について
お世話になります。 現在VS2003 C# とSQLSERVER2000で開発を行っています。 文字列として取得した、"2005/01/01"と"2005/05/08"で どちらが日付として未来になるのかを判断する方法はありますでしょうか? string strA = "2005/01/01"; string strB = "2005/05/08"; if ( A < B ) { MessageBox.Show("Bが大きい"); } このような事がしたいです。 int ret = strA.CompareTo(strB); で、比較する事ができるのでは?と考えましたが この比較は、辞書順で比較と言う事なので望む事ができないように思います。 (今のところ何件かテストしたところ問題ない動きをしてるようにも思いますが、、) 何か良い方法がございましたらよろしくお願いいたします。 | ||||||||
|
投稿日時: 2005-10-24 15:42
文字列が0詰めでフォーマットされているなら、普通に文字列比較でOKでしょう。
またはDateTimeにパースしましょう。 | ||||||||
|
投稿日時: 2005-10-24 15:53
burton999さん、お世話になっております。
いつもありがとうございます。 文字列は常に「YYYY/MM/DD」の形なのですが、この場合でも問題ないでしょうか? 現在先述の通り、int ret = strA.CompareTo(strB);で望む結果は得られているのですが、 これって大丈夫なのでしょうか。。。という疑問から質問させていただきました。 >またはDateTimeにパースしましょう。 MMやDDの部分を切ったり貼ったりが必要でして、できればstringで完結させたいです。。 | ||||||||
|
投稿日時: 2005-10-24 15:58
2005/10/10
2005/5/5 のように桁が合ってないと文字列比較はできないですが 2005/10/10 2005/05/05 と桁が合っていれば問題ありません。 これは文字列の比較は左から文字コードを基準として行われるためです。 | ||||||||
|
投稿日時: 2005-10-24 16:02
burton999さん、ありがとうございます。
とても助かりました。 int ret = strA.CompareTo(strB)で比較してやってみたいと思います。 今後とも情けない質問をしてしまうかもしれませんが、 頑張りますので何卒よろしくお願いいたします。 本当にありがとうございました。 | ||||||||
|
投稿日時: 2005-10-24 16:02
問題はないのですが、私は DateTime でやってしまう人です。 これは概念的な問題ですが。
切り貼りする必要ってありますか? System.DateTime dtHoge = System.DateTime.Parse("2005/05/05"); _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-10-24 16:34
じゃんぬねっとさん、ご返信ありがとうございます。
ご指摘いただいた内容を私なりに考えましたので以下の流れを先に書かせてください。 @システム日付からYYYY/MMまでを取得します。 AテーブルAのフィールド「A」から2桁の数値型の値を取得します。 Bここで@とAを文字列連結し、「YYYY/MM/DD」としています。 C生成された「YYYY/MM/DD」とテーブルBのフィールドBから「YYYY/MM/DD」を取得して、文字列比較しています。 以上がやっている処理なのですが、値の大きい小さいにより条件分岐をしていたので、 上記のような考えにまとまりました。 ParseしてしまうとBの部分ができないのではないかと考えているのですが、誤りでしょうか? | ||||||||
|
投稿日時: 2005-10-24 17:28
年月をシステムから取得して、かつ日のほうは数値ということであれば、
でできませんか? |