質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

3回答

3147閲覧

C# 現在日時から未来かどうかを比較する方法

---stax---

総合スコア148

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/10/30 02:19

表題の件で質問させてください
DataPicker1、DataPicker2をWPFの画面上に配置しており
この2つのコントロールのどちらかに未来の日付が日付が入力された場合、という処理を作りたいのですがどう比較条件を指定してよいかわかりません

具体的には
DataPicker1、DataPicker2で選択された範囲内のデータをDataGridに表示させるのですが、(列は各データ項目、行が日付です)現在日より未来の日付の行にはDataGridには空白を表示させようとしています

CompareToを使うのかなと考えたのですが、比較対象がDataPicker1、DataPicker2、未来の日付の3つあるのでどう使えばよいかわからず悩んでいます
アドバイスやほかの方法があればご教授よろしくお願いいたします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

回答ではありません。
イマイチ理解できていないのですが、

DataPicker1、DataPicker2で選択された範囲内のデータをDataGridに表示させるのですが、

ということは、DataGridの表示するデータというはDataPicker1、DataPicker2の範囲で絞り込むことはできてるのですよね? それならば、

この2つのコントロールのどちらかに未来の日付

とか気にしないで、単純に絞り込んだデータの日付が未来かどうか判断すれば良いのでは?

それとも、絞り込みを行うと未来のデータは存在しないから行そのものが存在しない、その場合は空のデータを設定する、ということでしょうか?

投稿2017/10/30 04:15

編集2017/10/30 08:35
ebiryo

総合スコア797

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

---stax---

2017/11/08 04:29

返答遅くなり申し訳ございません ebiryo様がおっしゃる通り絞り込んだデータから判断するように変更しました 以下はコードの一部分ですが、DataPicker1、DataPicker2で選択された範囲内のデータを抽出したデータテーブルに対しfor文で日付を入力している行のみ再度取得し、その行が未来の日付であった場合は空白のままにするようにしました 指摘いただいた部分が大きなヒントになりました ありがとうございます for (int l = 0; l < table.Rows.Count; l++) { var daycheckRow = table.Rows[l]; for (int g = 0; g < table.Columns.Count; g++) { string dayck = table.Rows[l][0].ToString(); DateTime daycheck = DateTime.Parse(dayck); string a = table.Rows[l][g].ToString(); if (daycheck < now) { if (a.ToString() == string.Empty) { table.Rows[l][g] = "0"; } else { } } } }
guest

0

こんにちは。

DataPicker1.SelectedDate ならびに DataPicker2.SelectedDate と

DateTime.Today を 比較演算子を使用して比較し、

1)「両方ともTodayより大」なら「完全に空っぽ」

  1. 「片方だけTodayより大」なら「もう片方の日付からTodayまでの該当DataをDataGridに表示」

  2. 「両方ともToday以下」なら「両方の日付の間の該当DataをDataGridに表示」

でいいのではないのでしょうか?

※ 「DataPicker1、DataPicker2で選択された範囲内」とあるので、

「 DataPicker1.SelectedDate <= DataPicker2.SelectedDate」を前提に進めたほうが

いいかと思います。

投稿2017/10/30 03:04

283cks

総合スコア138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

if文を上手に組み合わせよう。
DataPicker1、DataPicker2 の時間的順序をはっきりさせると、コードは書きやすくなると思います。

投稿2017/10/30 02:30

kiichi54321

総合スコア1984

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問