アプリ版:「スタンプのみでお礼する」機能のリリースについて

C#でプログラムをしています。

年月日のデータから年月だけを抽出し年月を比較し処理を行いたいのですが方法がわかりません。
下記のような書き方をしましたが、string型は>で比較できない(?)といったようなエラーとなってしまいました

(たとえば2011/08/06という日付だったら2011/08のみを抽出するつもりでかきました。)
Datetime chkDate1 = DateTime.parse(date1.Tostring.Substring(0,5))
Datetime chkDate2 = DateTime.parse(date2.Tostring.Substring(0,5))

if (chkDate1 >= chkDate2){



どなたか詳しいかた教えてください

A 回答 (1件)

string型の比較のエラーが出るはずはありませんが……。


DateTime.ParseでFormatExceptionが発生したのではありませんか。
なお,ToStringはシステムの設定に依存しますから,
カスタム日付書式文字列を指定して文字列化しないと,Substringへ渡すには不適当です。
# uみたいなカルチャ依存しない標準日付書式文字列であれば問題ないですが。
そして,書式文字列を指定したのでParseExtractで同じ書式を指定してパースしないと正しく扱えません。


で,DateTime型の年と月を取り出したいわけですから,
DateTime chkDate1 = new DateTime(date1.Year, date2.Month, 1);
のように,日付には適当な日を指定して再構築すればよいです。
1日を指定すればどんな月にも確実にあります。
# 31日とかを指定すると,存在しない月ではArgumentOutOfRangeExceptionが発生します。
末日を指定したいなら,
DateTime chkDate1 = new DateTime(date1.Year, date2.Month, 1).AddMonths(1).AddDays(-1);
と,「その月の初日の翌月の日の前日」という指定の仕方をします。

references)
MSDN: DateTime.Parse メソッド (String) (System)
http://msdn.microsoft.com/ja-jp/library/1k1skd40 …
MSDN: DateTime コンストラクター (Int32, Int32, Int32) (System)
http://msdn.microsoft.com/ja-jp/library/xcfzdy4x …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A