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){
~
どなたか詳しいかた教えてください
No.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 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) vb.net どうしてイコールにならないのでしょうか 4 2022/09/29 12:21
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/21 16:01
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Excel(エクセル) エクセル シート比較で書式を変えるを繰り返したい 2 2023/05/05 11:25
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
-
4
C# 配列の変数宣言について。
C言語・C++・C#
-
5
「マスタ」と「テーブル」の違いとはなんでしょうか?
Oracle
-
6
DataGridViewでyyyy/MM/dd
Visual Basic(VBA)
-
7
C# 超初心者です。 this.Refresh();という文を使いたいです
C言語・C++・C#
-
8
C# try-catch でcatchに飛ばす方法
C言語・C++・C#
-
9
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
10
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
11
DataGridViewのセル編集完了後に値を設定するには
Visual Basic(VBA)
-
12
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
13
CloseとDisposeの違い
Visual Basic(VBA)
-
14
datetime型でNULL値を入れたい。
SQL Server
-
15
DataGrdViewに関連付けたデータの更新
C言語・C++・C#
-
16
DateTimePickerでに年月までしか選択できないようにしたいです。
Visual Basic(VBA)
-
17
C# DataTableの行をソートしてDataGridViewに反映させたい
C言語・C++・C#
-
18
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
19
VB.net
Visual Basic(VBA)
-
20
画面を強制的に再描画させる方法
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
Excelで指数表現しないようにす...
-
VBAでの Replace関数で、ワイル...
-
【Excel VBA】複数ある特定の文...
-
エクセルで文字列をtxtファイル...
-
VBA2005 16進を2桁で表示したい。
-
ダブルコーテーションでアンド...
-
VBの「As String * 128」とは?
-
同一セル内に関数と文字列を同...
-
Excelで3E8を3.00E+8にしない方...
-
アクセスで特定の数字以外(複...
-
Left関数とRight関数を合わせた...
-
MS SQLServer のSQLで文字列の...
-
Msgboxの×が押されたとき
-
文字列からタブコードを取り除...
-
エクセル 数値データを桁をそ...
-
ORCLEでの小数の表示方法の変更...
-
16進数を10進数に簡単に変換す...
-
VBA テキストボックスの計算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
Excelで指数表現しないようにす...
-
Excelで3E8を3.00E+8にしない方...
-
エクセルで文字列の最大値を抽...
-
MS SQLServer のSQLで文字列の...
-
エクセルで文字列をtxtファイル...
-
Left関数とRight関数を合わせた...
-
【Excel VBA】複数ある特定の文...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
エクセル 数値データを桁をそ...
-
Msgboxの×が押されたとき
-
Excelはなんで先頭の0を消すん...
-
16進数を10進数に簡単に変換す...
-
Pro c/c++ でホスト変数の後に....
-
[C言語]fputsとfprintfの違い
おすすめ情報