1

私は c# が初めてで、総労働時間を示すコードを作成しようとしています。たとえば、午前 8 時から午後 4 時まで働いている人は、1 日 8 時間働いていることを意味します。彼が何時間働いたかを示すコードが欲しい.

for ループを試しましたが、うまくいきません。助けてください

int from = Convert.ToInt32(frA.Text);
int to = Convert.ToInt32(toA.Text);

for (from = 0; from <= to; from++)
{
    totalA.Text = from.ToString();
}
4

3 に答える 3

6

ここで必要なのはループではありません。DateTimeとを使用できますTimespan

    DateTime start = new DateTime(2013, 07, 04, 08,00, 00);
    DateTime end = new DateTime(2013, 07, 04, 16,00, 00);

    TimeSpan ts = end - start;

    Console.Write(ts.Hours);

ここではDateTime、今日 (2013 年 4 月 7 日) 用に 2 つのオブジェクトを作成します。1 つは開始時刻08:00と終了時刻16:00(午後 4 時) です。

Timespan オブジェクトtsはこれらの日付を減算します。その後、.Hoursプロパティを使用できます。

于 2013-07-04T08:19:07.373 に答える
1

最初に文字列を に変換する必要があり、次に構造体intを初期化できます。TimeSpan

int from, to;
if (int.TryParse(frA.Text, out from) && int.TryParse(toA.Text, out to))
{
    if (to <= from)
        MessageBox.Show("To must be greater than From.");
    else
    {
        TimeSpan workingHours = TimeSpan.FromHours(to - from);
        // now you have the timespan
        int hours = workingHours.Hours;
        double minutes = workingHours.TotalMinutes;
        // ...
    }
}
else
    MessageBox.Show("Please enter valid hours.");

TimeSpanここで を実際に使用する必要はありませんint。単独で使用することもできます。とにかくそれを使用して、分や秒などの他のプロパティを提供できることを示しました。

于 2013-07-04T08:21:23.397 に答える
0

その入力を DateTime に取得できる場合は、次のコード行のように実行できます

          double totalHours = (DateTime.Now - DateTime.Now).TotalHours;
于 2013-07-04T08:28:07.027 に答える