Pergunta

O .NET tem uma constante para o número de segundos em um dia (86400)?

Foi útil?

Solução

Se você quiser legibilidade, você pode usar:

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

Embora apenas usar sua própria const possa ser mais clara :)

Outras dicas

Não é um valor constante

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

Número de segundos em um regular O dia é 86400. Mas os dias em que as alterações do DST acontecem podem ser mais curtas ou mais.

No entanto, escrever 24*60*60 não é uma prática ruim, e é mais provável que esteja envolvido pelo compilador também!

tanto esforço apenas por não definir uma const para 60 x 60 x 24;)

Não é uma constante, o número de segundos em um dia varia dependendo do dia e do fuso horário. Portanto, não é algo que a Microsoft provavelmente ofereça.

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

Este foi um comentário de @ckarras. Adicionando -o como uma resposta para torná -lo mais visível.

Na verdade, está disponível na estrutura .NET. Você pode chegar assim:

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;
  }
}

Por favor, não use isso.

Mais próximo que você vai ser especificando que possui:

System.TimeSpan.TicksPerDay / System.TimeSpan.TicksPerSecond

Você pode até envolver isso como um método de extensão ...

public static Extensions
{
   public static int SecondsPerDay( this System.TimeSpan ts )
   {
      return   System.TimeSpan.TicksPerDay / System.TimeSpan.TicksPerSecond
   }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top