【问题标题】:How do I get TimeSpan given a date and a time如何在给定日期和时间的情况下获得 TimeSpan
【发布时间】:2015-10-19 04:48:51
【问题描述】:

是否可以得到 A 和 B 的时间跨度,其中 A(MM-dd-yyyy) = 10-06-2015 23:45 和 B = 9:00 AM。给定的数据格式正是这篇文章中的内容。我想在格式化时遇到了问题,还没有编码工作。

我还有其他问题可能与第一个有关,if(A>B) 可能吗?其中 A(MM-dd-yyyy) = 10-06-2015 23:45 和 B = 9:00 AM。可以比较这两个数据吗?

【问题讨论】:

  • 你问的是A和B之间的区别吗?如果 B 与 A 的日期不同怎么办?如果已经通过了怎么办?你会期待一个负值,还是第二天?您是否需要考虑夏令时,如果需要 - 在本地时区或任意时区?请编辑您的问题以更具体。一些输入和预期输出的示例会有所帮助。
  • 谢谢你的提示,先生。

标签: c# .net datetime timespan


【解决方案1】:
DateTime a = DateTime.ParseExact( "10-06-2015 23:45"  , "MM-dd-yyyy HH:mm"   , CultureInfo.InvariantCulture );
DateTime b = DateTime.ParseExact( "10-06-2015 9:00 AM", "MM-dd-yyyy hh:mm tt", CultureInfo.InvariantCulture );
TimeSpan difference = a - b;

如果您只知道一天中的b,那么这行得通:

DateTime b = DateTime.ParseExact( "9:00 AM" "hh:mm tt", CultureInfo.InvariantCulture );
b = a.Date.Add( b.TimeOfDay );

TimeSpan difference = a - b;

你说你正在使用DateTimePicker,在这种情况下:

DateTime a = dateTimePicker1.Value;
DateTime b = a.Date.Add( dateTimePicker2.TimeOfDay );
TimeSpan difference = a - b;

【讨论】:

  • 但是,我的 B 的格式从 DateTime Picker 固定为上午 9:00
  • @SuperPruuylan 我很抱歉。我已经扩展了我的答案以包括那个场景。
  • @SuperPruuylan 也就是说,如果您使用的是DateTimePicker,那么您根本不需要ParseExact,您可以直接使用该值。我会更新我的答案。
  • 让我问你一件事,我的 A = 10-06-2015 23:45 和 B = 9:00 AM。先生,有可能这样做if(A >B) 吗?抱歉,我无法标记你的名字
  • @SuperPruuylan 可以,但B 必须包含日期和时间值,而不仅仅是时间值。查看我的代码,了解我如何将 a 的日期部分添加到时间值的时间部分中。
【解决方案2】:

为此使用TimeOfDay

This 也会有所帮助。

示例:这样定义您的时间。

startDate='10-06-2015' startTime=10-06-2015 23:45:00 AM'

TimeSpan ts = startTime.TimeOfDay;
DateTime dt = startDate.Add(ts);

【讨论】:

  • 现在很好...get the timespan of A and B,在哪里
  • @un-lucky 我错过了引用一个例子,感谢您指出! :)
  • @AishvaryaKarthik 我猜这个的输出就像我上面的 A 的格式。
猜你喜欢
  • 2022-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
相关资源
最近更新 更多