- PR -

C#.NETでの時間計算について

1
投稿者投稿内容
kuro
会議室デビュー日: 2005/07/23
投稿数: 2
投稿日時: 2005-07-23 16:44
はじめまして。
表題の件、過去トピックスも参照したのですが、
発見できませんでしたので、情報提供いただきたくお願い致します。

Webフォームにて入力された"開始時間"、"終了時間"から経過時間の算出を行いたいのですが、
終了時間が24:00以降となった場合の計算を対応する必要があります。
現状の下記ソースでは当然ですが、
エラー(System.FormatException: 文字列で表される DateTime が範囲を超えています。)が発生します。

-------------------------------------------------------------------------
DateTime Date1;
DateTime Date2;
TimeSpan Time;

string StartTime = "0900";
string EndTime = "2500";

Date1 = DateTime.ParseExact(StartTime,"HHmm",null);
Date2 = DateTime.ParseExact(EndTime,"HHmm",null);

Time = Date2 - Date1;
-------------------------------------------------------------------------
※上記例では結果として「16:00」と取得したいのです。

そもそもDateTimeにて行うことに無理があるのでしょうか?
または、24:00以上はコードにて日数を+1などにて対応すべきなのでしょうか?

初歩的に質問で大変恐縮ですが、お知恵をお貸しいただきたくお願い致します。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-07-23 17:26
25:00と言う時刻があり得ないのは当然分かっていますよね。したがって25:00をDateTime(日付)型に設定しようとしてExceptionが発生するのは至極当然の結果だと思います。解決方法は二つあります。あなた自身の質問文にもあるように、日付も含めて正しい時刻表現に置き換えることです。もう一つの方法はTimeSpan(時間間隔)型を使うことです。
kuro
会議室デビュー日: 2005/07/23
投稿数: 2
投稿日時: 2005-07-23 18:30
甕星さん

さっそくの返信ありがとうございます。

> もう一つの方法はTimeSpan(時間間隔)型を使うことです。

上記方法を試してみたいと思います。
1

スキルアップ/キャリアアップ(JOB@IT)