【发布时间】:2017-03-27 14:08:17
【问题描述】:
我正在尝试从 24 小时中减去可能为负的时间跨度值,以将它们更改为正值。
以案例为例:
我想知道早上 8:00 之前还有多少时间。
如果现在是下午 16:00,timespan 给了我 -8 ish 的值,所以我想从 24 中减去它得到 16。
我正在尝试这个,但它给了我这个错误
日历不支持字符串表示的DateTime System.Globalization.GregorianCalendar。
我尝试了什么;
string startTime = String.Format("{0:t}", "8:00");
TimeSpan timeLeft = Convert.ToDateTime(startTime).Subtract(DateTime.Now);
if (timeLeft.TotalMinutes < 0 )
{
timeLeft = Convert.ToDateTime(String.Format("{0:H}","24:00")).Subtract(Convert.ToDateTime(timeLeft.Negate())) ;
}
我怎样才能从 24 小时中减去我的潜在负时间跨度?
【问题讨论】:
-
在 C# 中没有 Joda 时间? ??????
-
@RavindranathAkila > 有一些像nodatime.org 这样的项目。但老实说,DateTime API 非常高效,由于 OP 对 C# 缺乏了解,第一篇文章中的代码非常混乱(Ege,请不要在这里看到任何冒犯),它并不代表对 DateTime 工具的良好使用.
-
@Ege - “8:00 AM”是什么意思?您是指运行代码的计算机上本地时区的上午 8:00 吗?或者也许在地球上的其他地方或世界时?如果我给你一个像“2:30 AM”这样的输入,但它恰好在时钟从 2:00 到 3:00 的春季 DST 过渡的那一天运行,该怎么办?另外,“多少时间”是什么意思?你的意思是经过的时间?或者你的意思是墙上时间的差异?同样,在 DST 转换中,您可能有更多或更少。 Noda Time 将帮助解决所有这些问题。