【问题标题】:Add minutes to Current Specified time将分钟添加到当前指定时间
【发布时间】:2017-06-12 20:38:56
【问题描述】:

我想在指定时间增加 5 分钟,下面是我的代码。

string startTime = "1:00 AM";
string endTime = "0:05 AM";

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

我不断收到错误消息,我怎么能在凌晨 1:00 的 5 分钟内变成凌晨 1:05?

【问题讨论】:

  • 将错误信息添加到问题中

标签: c# time add


【解决方案1】:

不能添加时间,只能添加跨度。但是,您可以通过 TimeOfDay 属性获取 DateTime 的跨度:

string startTime = "1:00 AM";
string endTime = "0:05 AM";

DateTime duration = DateTime.Parse(startTime).Add(DateTime.Parse(endTime).TimeOfDay);

但是,更推荐直接使用 timeSpan(您必须删除 AM,因为它是一个跨度而不是 DateTime):

string startTime = "1:00 AM";
string endTime = "0:05";

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

如果你知道除了分钟之外你永远不会添加其他东西,我会做这样的事情:

string startTime = "1:00 AM";
int minutes = 5;

DateTime duration = DateTime.Parse(startTime).AddMinutes(minutes);

您可以了解有关 DateTime 的更多信息here

【讨论】:

  • +1。偏移,从概念上考虑程序。您没有有开始时间和结束时间。您有一个开始时间和一个持续时间。你真正想要的是'startTime'作为一个字符串,'durationInMinutes'作为一个整数。
【解决方案2】:

Add 方法有一个获取 TimeSpan 的重载。按如下方式使用:

DateTime dt = DateTime.UtcNow; // this should be your value actually
DateTime newTime = dt.Add(TimeSpan.FromMinutes(5);

System.DateTime.Add method documentation on MSDN

【讨论】:

  • AddMinutes 方法是更好的选择(@Ehsan 的回答)
【解决方案3】:

您传递的是整个DateTime 对象,而您只需在解析endTime 字符串后传递Minute 属性,然后在解析的DateTime 对象上使用AddMinutes 方法startTime为此:

DateTime updateTime = DateTime.Parse(startTime).AddMinutes(DateTime.Parse(endTime).Minute);

它将返回 DateTime 对象,在原始 DateTime 对象的基础上增加 5 分钟,即 1:00 AM,结果将是 1:05 AM

查看工作中的DEMO Fiddle here

【讨论】:

  • 不,不——这是个坏主意。此代码有效...直到持续时间更改为不是 1-59 之间的整数分钟数。如果持续时间更改为 30 秒或整小时?然后这段代码会在开始时间上增加 0 分钟。
猜你喜欢
  • 2017-03-28
  • 2019-12-20
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 2021-07-11
  • 2017-08-28
  • 1970-01-01
  • 2020-07-02
相关资源
最近更新 更多