C# 根据计算改变时间
我想根据计算结果从datetime变量中加/减X小时。我尝试了下面的语法C# 根据计算改变时间,c#,datetime,C#,Datetime,我想根据计算结果从datetime变量中加/减X小时。我尝试了下面的语法 string lsdt; var hours = (dt1 - dt2).TotalHours; var CalculatedDT = Convert.ToDateTime(lsdt.AddHours(hours)); 这就给了我一个错误 “string”不包含“AddHours”的定义,并且找不到接受“string”类型的第一个参数的扩展方法“AddHours” 从变量lsdt中减去变量hours的正确方法是什么?ls
string lsdt;
var hours = (dt1 - dt2).TotalHours;
var CalculatedDT = Convert.ToDateTime(lsdt.AddHours(hours));
这就给了我一个错误
“string”不包含“AddHours”的定义,并且找不到接受“string”类型的第一个参数的扩展方法“AddHours”
从变量lsdt
中减去变量hours
的正确方法是什么?lsdt
不是DateTime
变量,而是字符串。因此,您会收到以下错误消息:
“string”不包含“AddHours”的定义,也不包含扩展名
接受类型为“string”的第一个参数的方法“AddHours”可以是
发现
您必须首先将字符串
转换为日期时间
结构:
DateTime dt = DateTime.Parse(lsdt);
var hours = (dt1 - dt2).TotalHours;
var CalculatedDT = dt.AddHours(hours);
然后您可以使用AddHours
方法,该方法可用于DateTime
结构:
DateTime dt = DateTime.Parse(lsdt);
var hours = (dt1 - dt2).TotalHours;
var CalculatedDT = dt.AddHours(hours);
如Joel Etheron所建议的,为了更安全的方法,您还可以在使用前使用TryParse
检查解析中字符串的有效性:
DateTime dt;
bool result = DateTime.TryParse(lsdt, out dt);
if (!result) {
//Do something, don't continue
}
dt.AddHours()
将为您提供一个dateTime对象,那么您为什么要再次转换为dateTime?对我有效的是var calculatedt=Convert.ToDateTime(lsdt).AddHours(hours);对于异常安全,我建议使用TryParse而不是Parse。@MichaelMormon:是的,其思想是将字符串
转换为日期时间
,这样您就可以使用AddHours
方法,而不是在字符串中使用它itself@Ian-是的,我意识到在测试了您的代码并意识到可以对变量使用Convert.ToDateTime(),然后添加.AddHours()元素后