Вопрос

Есть ли в .NET константа для количества секунд в день (86400)?

Это было полезно?

Решение

Если вам нужна читаемость, вы можете использовать:

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

хотя просто использование вашей собственной константы может быть яснее :)

Другие советы

Это не постоянное значение

http://en.wikipedia.org/wiki/Leap_секунда

Количество секунд в обычный день 86400.Но дни, когда происходят переходы на летнее время, могут быть короче или длиннее.

Однако запись 24*60*60 вовсе не является плохой практикой, и, скорее всего, она тоже будет встроена в компилятор!

столько усилий только для того, чтобы не определить константу для 60 x 60 x 24;)

Это не константа, количество секунд в сутках варьируется в зависимости от дня и часового пояса.Таким образом, это не то, что Microsoft может предложить.

double secondsPerDay = TimeSpan.FromDays(1).TotalSeconds;

Это был комментарий @ckarras.Добавьте его в качестве ответа, чтобы сделать его более заметным.

На самом деле он доступен в платформе .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;
  }
}

Пожалуйста, не используйте это.

ближайший к вам вариант без указания вашего владения:

System.TimeSpan.TicksPerDay / System.TimeSpan.TicksPerSecond

вы могли бы даже обернуть это как метод расширения...

public static Extensions
{
   public static int SecondsPerDay( this System.TimeSpan ts )
   {
      return   System.TimeSpan.TicksPerDay / System.TimeSpan.TicksPerSecond
   }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top