2008-09-17 10 views
6

मुझे समय मापने और स्टोर करने का सबसे अच्छा तरीका तय करने में समस्याएं आ रही हैं।बीतने वाले समय को संभालना और भंडार करना

मेरे पास एक ऐप है जिसमें एक टेक्स्टबॉक्स है जो उपयोगकर्ताओं को एचएच: मिमी: एसएस या मिमी: एसएस प्रारूप में समय इनपुट करने की अनुमति देता है।

तो मैं इस स्ट्रिंग को पार्स करने और इसे टाइमस्पेन (या टाइमस्पेन.पर्स() का उपयोग करके और एमएम: एसएस केस में "00:" जोड़कर अपने व्यापार तर्क के लिए जोड़ने की योजना बना रहा था। ठीक?

मैं इसे डेटाबेस में कैसे स्टोर करूं? क्षेत्र का प्रकार क्या होगा? डेटटाइम गलत लगता है। मुझे 00:54:12 का समय नहीं चाहिए 1 9 01-01-01 00:54:12 के रूप में संग्रहीत किया जाना थोड़ा सा लगता है?

उत्तर

8

TimeSpan एक Int64 Ticks संपत्ति है कि आप के बजाय स्टोर कर सकते हैं, और एक constructor कि एक Ticks मूल्य लेता है।

3

मुझे लगता है कि उपयोगकर्ता इनपुट को सेकंड की पूर्णांक संख्या में परिवर्तित करना सबसे आसान है। तो 54:12 == 3252 सेकेंड, तो अपने डेटाबेस में या कहीं भी 3252 स्टोर करें। फिर जब आपको इसे उपयोगकर्ता को प्रदर्शित करने की आवश्यकता होती है, तो आप इसे फिर से परिवर्तित कर सकते हैं।

3

एक दिन से भी कम अवधि के लिए, बस सेकेंड का उपयोग करें जैसा कि अन्य ने कहा है।

लंबी अवधि के लिए, यह आपके डीबी इंजन पर निर्भर करता है। यदि SQL सर्वर, संस्करण 2008 से पहले आप एक डेटाटाइम चाहते हैं। यह ठीक है- आप केवल डिफ़ॉल्ट 1/1/1900 तारीख को अनदेखा कर सकते हैं जो उनके पास होगा। यदि आप एसक्यूएल सर्वर 2008 के लिए भाग्यशाली हैं, तो अलग-अलग दिनांक और समय डेटाटाइप हैं जिनका आप उपयोग कर सकते हैं। वास्तविक डेटाटाइम/टाइम प्रकार का उपयोग करने का लाभ दिनांक अवधि की तुलना करने के लिए डेटडिफ फ़ंक्शन का उपयोग है।

+0

अंगूठे क्रॉस प्लेटफॉर्म समाधान आपके द्वारा दी गई, किसी भी प्रोग्रामिंग भाषा या डेटाबेस डेटाप्रकार विशिष्ट से स्वतंत्र के लिए पार्स करने; ) – morde

0

अधिकांश डेटाबेस में कुछ प्रकार का अंतराल प्रकार होता है। उत्तर इस बात पर निर्भर करता है कि आप किस डेटाबेस के बारे में बात कर रहे हैं। ओरेकल के लिए, यह केवल एक फ़्लोटिंग पॉइंट NUMBER है जो दिनों की संख्या (आंशिक दिनों सहित) का प्रतिनिधित्व करता है। आप इसे किसी भी दिनांक प्रकार से/घटा सकते हैं और आपको सही उत्तर मिल सकता है।

0

(जैसा उचित हो या मिलीसेकंड) सेकंड के एक पूर्णांक गिनती के रूप में

0

क्या आप दोनों प्रारंभ समय और समय रोक रहे हैं? यदि ऐसा है, तो आप "टाइमस्टैम्प" डेटा प्रकार का उपयोग कर सकते हैं, यदि आपका डीबीएमएस इसका समर्थन करता है। यदि नहीं, बस दिनांक/समय के प्रकार के रूप में। अब, आपने कहा है कि आप तारीख भाग को संग्रहीत नहीं करना चाहते हैं - लेकिन उस मामले पर विचार करें जहां समय अवधि मध्यरात्रि में फैली हुई है - आप 23:55:01 से शुरू होते हैं और अंत में 00:05:14, उदाहरण के लिए - जब तक आपके पास तारीख भी है। दो दिनांक-समय मानों के बीच विलुप्त समय (सेकेंड में) वापस करने के लिए फ़ंक्शंस में मानक निर्माण होते हैं।

0

सेकंड या मिनट के लिए पूर्णांक के साथ जाएं। सेकेंड शायद बेहतर है। आप बहुत अधिक सटीकता के साथ कुछ चुनने के लिए खुद को लात नहीं देंगे। साथ ही, अपने यूआई के लिए, एकाधिक टेक्स्ट इनपुट का उपयोग करने पर विचार करें, आपको वास्तव में ":" में टाइप करने वाले उपयोगकर्ता के बारे में चिंता करने की ज़रूरत नहीं है। अन्य बाधाओं को जोड़ने के लिए यह भी आसान है जैसे कि मिनट और दूसरे मान 0-59 युक्त होते हैं।

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