C# 如何减去DateTime字段和持续时间?

C# 如何减去DateTime字段和持续时间?,c#,datetime,visual-studio-2012,duration,C#,Datetime,Visual Studio 2012,Duration,我在数据库中有一个字段是这种格式的:2013-06-18 17:00:00.000 和此格式的第二个字段持续时间:3000(这表示秒,因此为50分钟) 我需要减去这两个字段并设置另一个字段结果:2013-06-18 16:10:00.000 另外,它们都只能以字符串格式从数据库中检索。所以它们都是字符串 谢谢首先,您需要解析日期时间。然后使用AddSeconds进行减法: var date = DateTime.Parse("2013-06-18 17:00:00.000"); var newD

我在数据库中有一个字段是这种格式的:
2013-06-18 17:00:00.000
和此格式的第二个字段持续时间:
3000
(这表示秒,因此为50分钟)

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

另外,它们都只能以字符串格式从数据库中检索。所以它们都是字符串


谢谢

首先,您需要解析日期时间。然后使用
AddSeconds
进行减法:

var date = DateTime.Parse("2013-06-18 17:00:00.000");
var newDate = date.AddSeconds(int.Parse("-3000"));
您可以使用
newDate.ToString()
以字符串形式获取日期

您可以找到
DateTime
的文档


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

首先需要
解析日期时间。然后使用
AddSeconds
进行减法:

var date = DateTime.Parse("2013-06-18 17:00:00.000");
var newDate = date.AddSeconds(int.Parse("-3000"));
您可以使用
newDate.ToString()
以字符串形式获取日期

您可以找到
DateTime
的文档


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

您可以对datetime对象进行减法运算。(如果是DateTime类型)如果不是,则应该解析

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

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

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


Ricardo

您可以对datetime对象进行减法运算。(如果是DateTime类型)如果不是,则应该解析

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

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

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


里卡多

除了这里的其他答案外,还有如何将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

在这里你可以找到更多关于

的信息,除了这里的其他答案外,还有如何将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.Parse(yourTimeColumn.AddSeconds(-(int.Parse(yourDurationColumn)))
Parse()方法接受字符串输入。
Datetime.Parse(yourTimeColumn.AddSeconds(-(int.Parse(yourDurationColumn))
Parse()方法接受字符串输入。我们是否缺少newDate.ToString(),因为我们需要字符串格式。一个问题:var type表示DateTime变量?是否喜欢Java中的Date?有点像。在c#中,您有关键字“var”。它实际上可以表示任何类型。在我的示例中,如果您认为更清楚的话,可以将var更改为“DateTime”。然而,大多数人在习惯后会发现它更具可读性(尽管这可能需要一些时间)。您可以在这里阅读有关var的更多信息:如果输入字符串的格式不可接受,DateTime.Parse可能会引发异常。如果您不信任输入源,请注意这一点。我们是否缺少newDate.ToString(),因为我们需要字符串格式。一个问题:var type表示DateTime变量?是否喜欢Java中的Date?有点像。在c#中,您有关键字“var”。它实际上可以表示任何类型。在我的示例中,如果您认为更清楚的话,可以将var更改为“DateTime”。然而,大多数人在习惯后会发现它更具可读性(尽管这可能需要一些时间)。您可以在这里阅读有关var的更多信息:如果输入字符串的格式不可接受,DateTime.Parse可能会引发异常。如果您不信任您的输入源,那么很高兴知道这一点`@cfrozendath使用您必须使用的
var
关键字。它无法推断类型。但您也可以使用:
DateTime parsedDateFromBD性能可能更好。当然可以。这肯定是与您的原始答案相同的更好方法,因为通过
new DateTime()
创建的实例无论如何都会被TryParse操作覆盖。同意,我会更改它。感谢cfrozendath和@ManuelZelenkaThere两位,我们完全不需要调用“=new Datetime()`@cfrozendath使用您必须使用的
var
关键字。它无法推断类型。但您也可以使用:
DateTime parsedDateFromBD性能可能更好。当然可以。这肯定是与您的原始答案相同的更好方法,因为通过
new DateTime()
创建的实例无论如何都会被TryParse操作覆盖。同意,我会更改它。感谢Cfrozendath和@ManuelZelenka