Константа .NET для количества секунд в день?
Вопрос
Есть ли в .NET константа для количества секунд в день (86400)?
Решение
Если вам нужна читаемость, вы можете использовать:
(new TimeSpan(1,0,0,0)).TotalSeconds
хотя просто использование вашей собственной константы может быть яснее :)
Другие советы
Это не постоянное значение
Количество секунд в обычный день 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
}
}