我试图编写一个函数,将一个DateTime.Now实例转换成它所表示的秒数,以便我可以将它与另一个DateTime实例进行比较.这是我目前拥有的:
public static int convertDateTimeToSeconds(DateTime dateTimeToConvert) { int secsInAMin = 60; int secsInAnHour = 60 * secsInAMin; int secsInADay = 24 * secsInAnHour; double secsInAYear = (int)365.25 * secsInADay; int totalSeconds = (int)(dateTimeToConvert.Year * secsInAYear) + (dateTimeToConvert.DayOfYear * secsInADay) + (dateTimeToConvert.Hour * secsInAnHour) + (dateTimeToConvert.Minute * secsInAMin) + dateTimeToConvert.Second; return totalSeconds; }
我意识到我在一年中截断了几秒钟的计算,但是我不需要我的计算是精确的.我真的想知道我用来计算秒数的方法是否正确.
有没有人有任何可以更好地计算从DateTime对象给出的秒数?
此外,如果我在C#中编码,如果我要计算自AD以来的所有秒钟,返回类型是int64吗?
解决方法
DateTime型支持
comparison operators:
if (dateTimeA > dateTimeB) { ...
这也适用于DateTime.AddSeconds返回的DateTime个值:
if (dateTimeA.AddSeconds(42) > dateTimeB) { ...
如果您确实希望自01/01/0001 00:00:00之后经过的秒数,您可以计算两个DateTime值之间的差异.结果TimeSpan的价值有TotalSeconds属性:
double result = DateTime.Now.Subtract(DateTime.MinValue).TotalSeconds;