2010-01-25 2 views
5

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

+8

Почему вы не можете указать свой собственный? Это вряд ли изменится в ближайшее время ... –

+0

Увидев константы System.Net.WebRequestMethods.Http (вездесущие, неизменные и часто используемые - как SECONDS_IN_A_DAY), это не удивило бы меня, если бы .NET что-то здесь. – lance

+6

Да, это '86400'. Не используйте его, хотя он немного глючит и всегда возвращает значение 86400, независимо от секунд прыжка и локали. – Zano

ответ

7

Если вы хотите читаемость вы могли бы использовать:

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

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

+0

Не постоянна, но оставляет меня в стороне от второго счета. – lance

+2

Этот простой ответ заставил меня пересмотреть подход, который я принимал. Это не совсем тот код, который я использовал, чтобы в конечном итоге решить мою проблему, но я все для выбора ответа, основанного на рыбалке, которую он преподавал, а не рыбы, которую он предоставил. Спасибо. – lance

+8

Еще более удобочитаемо: TimeSpan.FromDays (1) .TotalSeconds – ckarras

21

Это не является постоянной величиной

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

+4

Это неожиданно :) –

+4

Непростые секунды - это не единственная проблема, дни, когда происходят изменения летнего времени, на час меньше или больше (с 00:00 до 24:00)) в соответствующие временные интервалы. – GaussZ

+1

К счастью, примерно в 363/365 случаях 86400 достаточно хорош.;) –

2

ближайший свой контекстуальный получая без указания:

System.TimeSpan.TicksPerDay/System.TimeSpan.TicksPerSecond 

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

public static Extensions 
{ 
    public static int SecondsPerDay(this System.TimeSpan ts) 
    { 
     return System.TimeSpan.TicksPerDay/System.TimeSpan.TicksPerSecond 
    } 
} 
3

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

+1

, вы не скажете мне, что день в Аризоне не тот же 24 часа, как это, например, в Аризоне. singapour? – Kai

5

Количество секунд в обычных днях - 86400. Но в те дни, когда изменения ДСТ могут быть короче или длиннее.

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

2

Он действительно доступен в .NET framework. Вы можете дойти до этого:

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

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

+0

Не для меня похожа ... :) – stakx

+1

Ну, этого не должно быть. Он плавно обрабатывает обновление .NET, необходимое после того, как вращение Земли замедляется. –

3

так много усилий только для определения не константный 60 х 60 х 24;)

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

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

Смежные вопросы