1

C#で時間を追加するにはどうすればよいですか? 例えば:

Time = "14:20 pm" +  "00:30 pm"
4

5 に答える 5

20

特定の DateTime に 30 分を追加すると仮定すると、AddMinutesを使用できます。

TestTime.AddMinutes(30);

それを行う別の方法:

DateTime TestTime = DateTime.Parse("22 Jun 2009 14:20:00");
// Add 30 minutes
TestTime = TestTime + TimeSpan.Parse("00:30:00");
于 2009-06-22T11:35:40.350 に答える
4

両方の時間を TimeSpan オブジェクトに変換する必要があります。

これにより、各時間の時間/分の値に明示的にアクセスできるようになり、それらを合計することができます。

MSDN のTimeSpanを参照してください。

于 2009-06-22T11:32:32.163 に答える
4
 TimeSpan t1 = new TimeSpan(14, 20,0);
 TimeSpan t2 = new TimeSpan(0,30,0);
 Console.Out.WriteLine(t1 + t2);
于 2009-06-22T11:36:24.997 に答える
2

これを試してください (ただし、0:30pm は意味がありません):

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(new StringTime("14:20 pm").Add(new StringTime("0:30 pm")));
        Console.WriteLine(new StringTime("15:00 pm").Add(new StringTime("0:30 pm")));
        Console.WriteLine(new StringTime("5:00am").Add(new StringTime("12:00pm")));
    }
}

class StringTime
{
    public int Hours { get; set; }
    public int Minutes { get; set; }
    public bool IsAfternoon { get; set; }

    public StringTime(string timeString)
    {
        IsAfternoon = timeString.Contains("pm");
        timeString = timeString.Replace("pm", "").Replace("am", "").Trim();

        Hours = int.Parse(timeString.Split(':')[0]);
        Minutes = int.Parse(timeString.Split(':')[1]);
    }

    public TimeSpan ToTimeSpan()
    {
        if (IsAfternoon)
        {
            if (Hours < 12)
            {
                Hours += 12;
            }
        }
        return new TimeSpan(Hours, Minutes, 00);
    }

    public TimeSpan Add(StringTime time2)
    {
        return this.ToTimeSpan().Add(time2.ToTimeSpan());
    }
}

出力 (ドットの前の値は日数):

1.02:50:00
1.03:30:00
17:00:00

于 2009-06-22T11:52:44.340 に答える
1

「14:20PM」と赤色を追加できないのと同じように、それらを追加することはできません。時間とタイムスパン (午後 14 時 20 分 + 30 分) または 2 つのタイムスパン (2 時間 + 30 分) を追加できます。ただし、2 回追加することはできません。

これをさらに明確にするために、14.20 + 00:30 (EST) = 23.20 + 09:30 (UTC) を 2 回足すとどうなるかを考えてみましょう。

于 2009-06-22T11:48:55.470 に答える