我读了一个ini文件,里面有一个保存的日期/时间字符串。
[Data]
Update = 07.02.2014 13:30:36
Rate_s = 5
我在C#程序中将两个值都作为字符串。 现在我想在值(Update_old)中保存“更新”,下次我读取文件时我想检查Update_old + Rate_s> = Update_new
平均值 我第一次阅读文件:
Update_old = 07.02.2014 13:30:36
然后10秒钟
Update_New = 07.02.2014 13:30:46
我需要知道时间是否改变了。 我现在的问题是如何将带有日期和时间的字符串转换成我可以添加5secs的字符串以及如何比较两个值(旧+率与新值)
新的时间可能只有5秒钟,但我也可能在5小时后的1天。
感谢您的帮助
答案 0 :(得分:1)
您需要使用DateTime.Parse
将字符串值解析为DateTime
结构。然后只需与<
,>
,==
或!=
DateTime Update_New = DateTime.Parse("07.02.2014 13:30:36");
if (Update_New > Update_old)
{
}
如果您想操纵值,请使用AddX
DateTime
Update_New = Update_New.AddSeconds(5);
Update_New = Update_New.AddHours(5);
Update_New = Update_New.AddDays(1);
答案 1 :(得分:1)
如果Update_old
和Update_new
同时TimeSpan
和TotalSeconds
进入日期时间,则parse的可能结果之一是if ((UpdateNewDateTime - UpdateOldDateTime).TotalSeconds > 5)
{ ...
,其中方便地具有{{1}}等属性{1}}即
{{1}}
但是,如果您正在进行大量日期操作,我建议您也考虑查看subtraction of 2 date times。这也考虑了NodaTime,如TimeZones,夏令时和人体日历中的不一致。
答案 2 :(得分:1)
您可以使用DateTime.ParseExact
获取日期时间,使用TimeSpan.FromSeconds
获得5秒的TimeSpan
。
string Update_old = "07.02.2014 13:30:36";
string Rate_s = "5";
DateTime oldDt = DateTime.ParseExact(Update_old, "dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture);
string Update_New = "07.02.2014 13:30:46";
DateTime newDt = DateTime.ParseExact(Update_New, "dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture);
TimeSpan seconds = TimeSpan.FromSeconds(int.Parse(Rate_s));
if (oldDt + seconds > newDt)
{
// ...
}
旁注:您可以使用ParseExact
来使用正确的文化,而不是使用DateTime.Parse
。在这种情况下,它可能是德国文化(“de-DE”):
var deCulture = CultureInfo.CreateSpecificCulture("de-DE");
DateTime oldDt = DateTime.Parse("07.02.2014 13:30:36", deCulture);
DateTime newDt = DateTime.Parse("07.02.2014 13:30:46", deCulture);
由于这是一个文件,我不会在没有文化的情况下使用DateTime.Parse
,因为当前文化可能会发生变化。
答案 3 :(得分:1)
将字符串转换为日期时间类型;
DateTime start = (DateTime)strDateTime.toDate("dd.MM.yyyy H:mm:ss");
正如Tim Schmelter所说使用TimeSpan添加一段时间(例如10秒)
TimeSpan seconds = TimeSpan.FromSeconds(10);
并使用运算符进行比较&lt; =,&gt; =,==,&gt;,&lt;。