【问题标题】:Difference Between Two Times in C# [duplicate]C#中两次之间的差异[重复]
【发布时间】:2015-11-04 16:25:12
【问题描述】:

我已经阅读了几个关于这个主题的讨论,比如下面的一个。

How do I find the time difference between two datetime objects?

但我找不到我的问题的答案。

public DateTime retunPureTime(int min,int sec)
{
    DateTime mydate= new DateTime(2000, 12, 23, 14, 40, 20);

    retrun ????????;
}

我需要通过参数值返回一个DateTime 对象减少。例如,如果 通过 min=3 和 sec=30,

我需要返回以下日期。

DateTime(2000, 12, 23, 14, 36, 50);

【问题讨论】:

  • 你听说过TimeSpan吗?
  • @MelanciaUK 虽然TimeSpan 对象听起来像问题标题中所期望的那样,但描述听起来就像他实际上只是想将给定的DateTime 对象减少N 分和Y 秒,而不是-- 用他自己的话 -- 两次之间的区别。
  • 您需要时差还是新的日期时间?您的问题和解释有歧义。

标签: c# date datetime time


【解决方案1】:

您可以使用 Add 方法(AddSeconds、AddMinutes 等)添加时间。您还可以使用 Subtract 方法减去时间。它需要一个 DateTime 参数。

所以,如果你想减去 3 分 30 秒,你可以这样做:

DateTime myDate= new DateTime(2000, 12, 23, 14, 40, 20);
var foo = new DateTime();
var subtraction = foo.AddMinutes(3).AddSeconds(30);

return myDate.Subtract(subtraction);

【讨论】:

  • DateTime 是不可变的,AddMinutes 将返回一个新的DateTime 实例,而不是更改您调用该方法的实例。
  • @TrevorPilley:OP 没有要求返回相同的对象。这更优雅。
  • @NirajDoshi Yiu 没有理解 Trevor 的观点。这将无济于事。
  • @Ivan Stoev:对不起,我的错。我现在明白了!
  • @TrevorPilley Doh。你是对的。更新了我的答案。
【解决方案2】:

你可以这样做:

return mydate - TimeSpan.FromSeconds(min * 60 + sec);

【讨论】:

    猜你喜欢
    • 2011-06-01
    • 2016-04-01
    • 2020-01-09
    • 2014-05-14
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多