2010-01-25 14 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

और भी पठनीय: टाइमस्पेन। फ्रॉमडेज़ (1)। टोटलसेकंड – ckarras

21

यह एक निरंतर मूल्य नहीं है

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

+4

यह अप्रत्याशित है :) –

+4

लीप सेकंड एकमात्र समस्या नहीं है, दिन जहां डेलाइट सेविंग टाइम परिवर्तन होते हैं, एक घंटा कम या अधिक होता है (00: 00-24: 00 से गिनती) के अनुसार समय के अनुसार। – GaussZ

+1

सौभाग्य से, लगभग 363/365 मामलों में, 86400 पर्याप्त है।;) –

2

निकटतम अपने w/o प्राप्त करने जा रहा है:

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

यह एक स्थिर नहीं है, एक दिन में सेकंड की संख्या दिन और समय-क्षेत्र पर निर्भर करता है। इस प्रकार यह ऐसा कुछ नहीं है जो माइक्रोसॉफ्ट की पेशकश करने की संभावना है।

+1

आप मुझे नहीं बताएंगे कि एरिजोना में एक दिन 24 घंटों तक नहीं है जैसा कि यह है सिंगापुर? – Kai

5

नियमित दिन 86400 में सेकंड की संख्या है। लेकिन दिन जब डीएसटी परिवर्तन होता है तो यह छोटा या लंबा हो सकता है।

हालांकि, 24 * 60 * 60 लिखना बिल्कुल बुरा अभ्यास नहीं है, और यह संकलक द्वारा भी रेखांकित होने की संभावना है!

2

यह वास्तव में .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; 
    } 
} 

कृपया इसका उपयोग न करें।

+0

मेरे लिए स्थिर नहीं दिखता है ... :) – stakx

+1

अच्छा, यह नहीं होना चाहिए। यह पृथ्वी के घूर्णन के बाद पर्याप्त धीमे हो जाने के बाद आवश्यक .NET अद्यतन को संभालता है। –

3

इतना प्रयास 60 x 60 x 24 के लिए एक स्थिरांक को परिभाषित करने के लिए न सिर्फ;)

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

यह @ckarras से एक टिप्पणी थी। इसे और अधिक दृश्यमान बनाने के लिए इसे एक उत्तर के रूप में जोड़ना।

संबंधित मुद्दे