将DateTime.Now转换为秒

The*_*uru 15 .net c# .net-4.0 .net-3.5

我正在尝试编写一个函数,将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;
    }
Run Code Online (Sandbox Code Playgroud)

我意识到我在一年内截断了秒的计算,但我不需要我的计算精确.我真的想知道我用来计算秒数的方法是否正确.

有没有人能够更好地计算从DateTime对象给出的秒数?

另外,如果我要用C#编码,如果我要计算自0 AD以来的所有秒数,那么返回类型应该是int64吗?

dtb*_*dtb 30

日期时间类型支持比较运算符:

if (dateTimeA > dateTimeB)
{
    ...
Run Code Online (Sandbox Code Playgroud)

这也适用于DateTime.AddSeconds返回的DateTime值:

if (dateTimeA.AddSeconds(42) > dateTimeB)
{
    ...
Run Code Online (Sandbox Code Playgroud)

如果您确实需要自01/01/0001 00:00:00以来经过的秒数,则可以计算两个DateTime值之间的差异.生成的TimeSpan值具有TotalSeconds属性:

double result = DateTime.Now.Subtract(DateTime.MinValue).TotalSeconds;
Run Code Online (Sandbox Code Playgroud)


rei*_*ein 9

将DateTime对象转换为秒确实没有意义.只有在处理一段时间(TimeSpan)时,秒才有意义.您是否要比较两个日期以获得它们之间的秒数:

TimeSpan diff = DateTime.Now - PreviousDateTime;
double seconds = diff.TotalSeconds;
Run Code Online (Sandbox Code Playgroud)


Chr*_*ter 6

请参阅以下主题中的建议:

如何将刻度转换为分钟?

TimeSpan.FromTicks(DateTime.Now.Ticks).TotalSeconds; 
Run Code Online (Sandbox Code Playgroud)


Gen*_*ari 5

如果目的是找到两个日期之间的秒数,那么使用TimeSpan对象会好得多.

TimeSpan span = date2 - date1;
double seconds = span.TotalSeconds;
Run Code Online (Sandbox Code Playgroud)


Joe*_* L. 5

假设您确实需要获取 datetime 对象的秒数,您可以直接从中获取“Ticks”属性。这些不是以秒为单位,但您可以轻松地除以适当的因子以将 Ticks 转换为秒。请参阅:http : //msdn.microsoft.com/en-us/library/system.datetime.ticks.aspx

所以,像这样:

        DateTime.Now.Ticks/TimeSpan.TicksPerSecond
Run Code Online (Sandbox Code Playgroud)