6

.NET 是否有一个常数表示一天中的秒数(86400)?

4

9 回答 9

20

这不是一个恒定的值

http://en.wikipedia.org/wiki/Leap_second

于 2010-01-25T23:25:08.880 回答
9

如果你想要可读性,你可以使用:

(new TimeSpan(1,0,0,0)).TotalSeconds

虽然只使用你自己的 const 可能会更清楚:)

于 2010-01-25T23:23:07.030 回答
5

正常一天的秒数是 86400。但 DST 发生变化的天数可能更短或更长。

但是,写成 24*60*60 一点也不坏,而且它也很可能被编译器内联!

于 2010-01-25T23:49:48.273 回答
5
double secondsPerDay = TimeSpan.FromDays(1).TotalSeconds;

这是来自@ckarras 的评论。将其添加为答案以使其更加可见。

于 2017-01-06T01:00:31.370 回答
4

在不指定您拥有的情况下最接近您将获得的:

System.TimeSpan.TicksPerDay / System.TimeSpan.TicksPerSecond

您甚至可以将其包装为扩展方法...

public static Extensions
{
   public static int SecondsPerDay( this System.TimeSpan ts )
   {
      return   System.TimeSpan.TicksPerDay / System.TimeSpan.TicksPerSecond
   }
}
于 2010-01-25T23:25:27.727 回答
4

只是为了不为 60 x 60 x 24 定义 const 付出了这么多努力;)

于 2010-01-26T01:45:08.170 回答
3

它实际上在 .NET 框架中可用。你可以像这样得到它:

using System;
using System.Reflection;

public static class DateTimeHelpers {
  public static int GetSecondsPerDay() {
    object obj = typeof(DateTime).GetField("MillisPerDay", BindingFlags.NonPublic | BindingFlags.Static).GetValue(null);
    return (int)obj / 1000;
  }
}

请不要使用那个。

于 2010-01-26T01:03:41.053 回答
2

它不是一个常数,一天中的秒数因日期和时区而异。因此,这不是微软可能提供的东西。

于 2010-01-25T23:26:16.617 回答
0

如果您想要比 GaussZ 的答案更具可读性,您可以使用:

TimeSpan.FromDays(1).TotalSeconds
于 2021-04-01T04:50:39.773 回答