在C#中获得两次时间跨度?

Hun*_*ell 44 c# datetime timespan

我有两个文本框.一个用于时钟,一个用于时钟输出.时间将采用以下格式:

Hours:Minutes
Run Code Online (Sandbox Code Playgroud)

可以说我已经在上午7点钟进入,并在下午2点钟出发.

使用我当前的代码,我得到2小时的差异,但它应该是7小时.我怎么会在C#中做到这一点.通过让用户选择AM或PM,我将转换为24小时,但我感到困惑.

所以,基本上,我如何计算两次之间的小时数差异?

我试过这个,但是当我插入数字时,却得了2个小时而不是7个小时.

DateTime startTime = Convert.ToDateTime(textBox1.Text);
DateTime endtime = Convert.ToDateTime(textBox2.Text);

TimeSpan duration = startTime - endtime;
Run Code Online (Sandbox Code Playgroud)

Kit*_*124 83

string startTime = "7:00 AM";
string endTime = "2:00 PM";

TimeSpan duration = DateTime.Parse(endTime).Subtract(DateTime.Parse(startTime));

Console.WriteLine(duration);
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)

将输出:07:00:00.

如果用户输入军事时间,它也有效:

string startTime = "7:00";
string endTime = "14:00";

TimeSpan duration = DateTime.Parse(endTime).Subtract(DateTime.Parse(startTime));

Console.WriteLine(duration);
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)

输出:07:00:00.

要更改格式: duration.ToString(@"hh\:mm")

有关更多信息,请访问: http ://msdn.microsoft.com/en-us/library/ee372287.aspx

附录:

多年来,我有点困扰我,这是我给过的最流行的答案; 原来的答案从来没有真正解释了为什么OP的码并未尽管事实上,它的工作非常有效的.获得如此多选票的唯一原因是因为当人们搜索"C#","timespan"和"between"之间的组合时,该帖子会出现在Google上.

  • `TimeSpan duration = endtime - startTime;`在这个例子中也是如此. (7认同)
  • @EliteGamer,这是如何回答你的问题的? (2认同)
  • 它仍然没有解释结果是如何2小时,因为代码基本上与他的相同(更改了endTime和startTime的顺序) (2认同)

Tim*_*ner 11

你可以使用TimeSpan构造函数,这对Ticks来说需要很长时间:

 TimeSpan duration = new TimeSpan(endtime.Ticks - startTime.Ticks);
Run Code Online (Sandbox Code Playgroud)