【问题标题】:How to convert between TimeSpan and DateTime [duplicate]如何在 TimeSpan 和 DateTime 之间转换 [重复]
【发布时间】:2019-12-26 18:14:20
【问题描述】:

一个有点傻的问题,但我发现自己不知道如何回答。

Timespan ts = (DateTime1 - DateTime2).TotalMinutes

假设我知道tsDateTime2,我怎样才能找到DateTime1

【问题讨论】:

  • ts 添加到DateTime2var DateTime1 = DateTime2.Add(ts);
  • 顺便说一句,TotalMinutes 属性返回 double,它不会隐式转换为 TimeSpan,因此,您的代码可能甚至无法编译。
  • 这不是TimeSpanDateTime 之间的“转换”。您只是将TimeSpan 添加到DateTime,或者在两个DateTimes 之间的减法运算中检索前一个操作数,从而产生TimeSpan

标签: c# datetime timespan


【解决方案1】:

您可以将TimeSpan 添加到日期

TimeSpan ts = DateTime1 - DateTime2;

DateTime1 = DateTime2 + ts;

请注意,我删除了TotalMinutes,因为它返回的是double,而不是TimeSpan

如果你想用分钟来工作,你可以写

double minutes = (DateTime1 - DateTime2).TotalMinutes;

DateTime1 = DateTime2 + TimeSpan.FromMinutes(minutes);

请注意,分钟包含小数形式的秒和秒的小数部分。如果您只需要完整的分钟,您可以通过以下方式获得它们:

int fullMinutes = (int)Math.Floor(minutes);

【讨论】:

  • 也打败我吧! ?
【解决方案2】:

您的代码无法编译。

例子:

 DateTime DateTime1 = DateTime.Now;
 DateTime DateTime2 = DateTime1.AddMinutes(-10);
 var ts = (DateTime1 - DateTime2).TotalMinutes;  //  ts is a double

 DateTime DateTime3 = DateTime1 + TimeSpan.FromMinutes(ts);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 2017-06-25
    • 1970-01-01
    • 2012-11-22
    相关资源
    最近更新 更多