【问题标题】:How to subtract DateTime field and Duration?如何减去 DateTime 字段和 Duration?
【发布时间】:2016-01-09 18:36:58
【问题描述】:

我在数据库中有一个字段格式为:2013-06-18 17:00:00.000 和第二个字段 Duration 格式为:3000(这代表秒,所以是 50 分钟)

我需要减去这两个字段并设置另一个字段结果,这将是:2013-06-18 16:10:00.000

一个补充是它们都只能以字符串格式从数据库中检索。所以它们都是字符串

谢谢

【问题讨论】:

  • Datetime.Parse(yourTimeColumn).AddSeconds(-(int.Parse(yourDurationColumn)));
  • Parse() 方法接受字符串输入。

标签: c# datetime visual-studio-2012 duration


【解决方案1】:

首先您需要Parse 日期时间。然后用AddSeconds做减法:

var date = DateTime.Parse("2013-06-18 17:00:00.000");
var newDate = date.AddSeconds(int.Parse("-3000"));

您可以使用newDate.ToString() 以字符串形式获取日期。

您可以找到DateTime here 的文档。

更新:将秒数更改为字符串值。它使用 Parse 转换为整数。

【讨论】:

  • 我们是否缺少 newDate.ToString() 因为我们需要字符串格式
  • 第一个问题:var类型代表DateTime变量?喜欢Java中的日期吗?谢谢
  • 好吧。在 c# 中,您有关键字“var”。它实际上可以表示任何类型。如果您认为这更清楚,您可以在我的示例中将 var 更改为“DateTime”。然而,大多数人在习惯后发现它更具可读性(尽管这可能需要一些时间)。您可以在此处阅读有关 var 的更多信息:stackoverflow.com/questions/41479/use-of-var-keyword-in-c-sharp
  • 如果输入字符串的格式不可接受,请注意 DateTime.Parse 将引发异常。如果您不信任您的输入源,请注意这一点。
【解决方案2】:

您可以减去 datetime 对象。 (如果是 DateTime 类型)如果不是,你应该解析。

为了处理错误,我建议使用 DateTime.tryParse(value, out dateTime);

DateTime parsedDateFromBD;

if(DateTime.tryParse("2013-06-18 17:00:00.000", out parsedDateFromBD)
{
    // do Stuff
}
else
{
   // do something else
}

如果您从数据库中获取日期时间,您可以简单地:

var calcDate1 = dateFromBD.addSeconds(3000); //to Add
var calcDate2 = dateFromBD.addSeconds(-3000); //to subtract

干杯

里卡多

【讨论】:

  • 绝对没有必要调用` = new Datetime();`
  • @cFrozenDeath 必须使用var 关键字。它无法推断类型。但您也可以使用:DateTime parsedDateFromBD; 可能会更好地提高性能。当然。
  • 这绝对是您原始答案中更好的方法,因为通过 new DateTime() 创建的实例无论如何都会被 TryParse 操作覆盖。
  • 同意,我会改变的。感谢 cFrozenDeath 和 @ManuelZelenka
【解决方案3】:

除了其他答案之外,这里还有如何将 newDate 解析为匹配所需输出的字符串

string date = "2013-06-18 17:00:00.000";
string duration = "-3000";

int durationSeconds = int.Parse(duration);

var newDate = DateTime.Parse(date).AddSeconds(durationSeconds).ToString("yyyy-MM-dd HH:mm:ss.fff");

输出是

//2013-06-18 16:10:00.000

在这里你可以找到更多关于DateTime.ToString()的信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 2018-11-21
    • 2011-05-15
    • 2021-07-07
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多