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

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

ただいまの
回答率

90.49%

  • C#

    7136questions

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

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

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 531

---stax---

score 62

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+1

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

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

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

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/08 13: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
    {

    }
    }
    }
    }

    キャンセル

+1

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

こんにちは。

DataPicker1.SelectedDate ならびに DataPicker2.SelectedDate と

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

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

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

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

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

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

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

いいかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C#

    7136questions

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