0

C# DateTime を使用して、0 (または真夜中) を過ぎた時刻を減算したいと思います。ただし、そうするとエラーが発生します。ズームイン、ズームアウト、スクロールできるタイムラインを作成しようとしています。次のエラーが表示されます:「値を加算または減算すると、表現できない DateTime になります。」

DateTime は 0 から 23 までをラップアラウンドする方法を知らないと思いますか? どうすればこれを回避できますか?

4

3 に答える 3

2

から始まる日付を使用していると思いますDateTime.MinValue。の前になるように時間を減算するとDateTime.MinValue、その例外が発生します。

// This is equal to DateTime.MinValue - maybe you're doing this?
DateTime date = new DateTime();
// Bang
date = date.AddHours(-1);

本当に「ただの時間」表現が必要な場合は、単に.DateTime

于 2012-04-11T20:37:40.853 に答える
2

TimeSpanaから aを減算するDateTimeと、真夜中を過ぎて「ラップアラウンド」します。

> var d1 = DateTime.Parse("4/11/2012 12:30:00 AM");
> var d2 = d1.Subtract(new TimeSpan(1, 15, 0));
> 
> d2
[4/10/2012 11:15:00 PM]
于 2012-04-11T20:36:31.453 に答える
0

真夜中に設定された TimeSpan から 5 分を引くと、-00:05 になります。これにより、Timespan が -00:05 ではなく 23:55 になります。

DateTime.Today.Subtract(TimeSpan.FromMinutes(5)).TimeOfDay;
于 2021-06-15T20:17:44.347 に答える