संपादित करें 2009 से नवंबर-04टाइमस्पेन अनावश्यक है?
ठीक है, तो यह थोड़ी देर के बाद मैं पहली बार इस प्रश्न पोस्ट हो गया है। ऐसा लगता है कि शुरुआती उत्तरदाताओं में से कई वास्तव में जो कुछ कह रहे थे उसे पाने में असफल रहा - एक आम प्रतिक्रिया "आप जो कह रहे हैं वह कोई समझ नहीं लेती" पर कुछ भिन्नता थी - और इसलिए मैंने कुछ आसान बना दिया है वास्तव में मेरे बिंदु को चित्रित करने के लिए चित्र।
हम संख्या की बात करते हैं, हम आम तौर पर अंक के लिए सीखने क्या ग्रेड स्कूल के बच्चों कहा जाता है पर संख्या रेखा बात कर रहे हैं:
अब, जब हम गणित जानने के लिए, हमारे मन एक प्रदर्शन करने के लिए सीखना इस अवधारणा के बहुत ही रोचक परिवर्तन। अभिव्यक्ति 1 + 0.5
Evalutating, उदाहरण के लिए, अगर हम केवल हमारे "नंबर लाइन सोच" लागू किया, किसी भी तरह इस की समझ बनाने के लिए हमें की आवश्यकता होगी:
यह मुश्किल है वास्तव में है कि वर्णन करने के लिए है, क्योंकि यह मुश्किल है इसके बारे में सोचें: "दो अंक" जोड़ना। यह वह जगह है जहां कई उत्तरदाताओं ने तारीखों को जोड़ने के विचार से संघर्ष किया (या बस इसे बेतुका के रूप में खारिज कर दिया), क्योंकि वे अंक के रूप में तारीखों के बारे में सोच रहे थे।
हालांकि, अभिव्यक्ति 1 + 0.5
क्योंकि जब हम के बारे में सोच, हम वास्तव में इस कल्पना कर रहे हैं, हमें मेकअप भावना करता है:
है, संख्या (या बिंदु) 1, प्लस vector 0.5, जिसके परिणामस्वरूप बिंदु 1.5।
वैकल्पिक रूप से, हम इस कल्पना की जा सकती है:
है, वेक्टर 1, प्लस वेक्टर 0.5, वेक्टर 1.5 में जिसके परिणामस्वरूप।
दूसरे शब्दों में, संख्याओं से निपटने पर, हम बिंदुओं और वैक्टरों को एक दूसरे के साथ व्यवहार करते हैं। लेकिन तिथियों के बारे में क्या? तिथियां, आखिरकार, संख्याएं हैं।
सूचना समय और नंबर लाइन के बीच पत्राचार: अगर तुम मुझे विश्वास नहीं है, ऊपर दिए गए नंबर लाइन के लिए इस लाइन की तुलना? यह मेरा मुद्दा था: यदि हम ऊपर संख्या के साथ रूपांतरण करते हैं, तो हमें इसे तिथियों के साथ भी करने में सक्षम होना चाहिए।तो, लागू करने के "समय सोच", अभिव्यक्ति 0001-Jan-02 00:00:00 + 0001-Jan-01 12:00:00
भावना का एक बहुत बनाने के नहीं है, के रूप में प्रतिसाददाताओं के बहुत सारे ने कहा:
लेकिन, अगर हम अपने सिर में एक ही वैचारिक परिवर्तन करना कि हम प्रदर्शन हर बार जब हम जोड़ सकते हैं या संख्या घटाना, हम आसानी से ऊपर इस रूप में "पुनर्विचार" कर सकते हैं:
तो स्पष्ट रूप से, के बीच का अंतर एक DateTime
और TimeSpan
एक ही अंतर है जो एक बिंदु और एक वेक्टर के बीच मौजूद है। मुझे लगता है कि मेरे सुझाव के लिए बहुत से लोगों को नकारात्मक प्रतिक्रिया देने का कारण यह है कि इस तरह से परिमाण के रूप में तारीखों के बारे में सोचने के लिए यह इतना अप्राकृतिक लगता है। लेकिन मैं तर्क नहीं खरीदता कि शून्य के रूप में उपयोग करने के लिए कोई स्पष्ट संदर्भ बिंदु नहीं है। एक स्पष्ट संदर्भ बिंदु है, और मैं आपको एक संकेत देता हूं जहां यह है: लगभग 2010 साल पहले।
मुझे गलत मत करो: मैं एक DateTime
और एक TimeSpan
की धारणा के बीच एक वैचारिक विभाजन ड्राइंग का उपयोगिता पूछताछ नहीं कर रहा हूँ। असल में, मेरे प्रश्न के साथ-साथ होना चाहिए (जैसा कि क्रिसडब्ल्यू अप्रत्यक्ष रूप से सुझाया गया है), क्यों नियमित संख्यात्मक प्रकारों से निपटने के दौरान हम संख्याओं और वैक्टरों को एक दूसरे के साथ व्यवहार करते हैं? (या: हमारे पास int
प्रकार क्यों है, int
और intspan
के बजाय?) इसमें एक बड़ा अंतर है, और फिर भी जब हम ज्यामिति शुरू करते हैं तो हम कभी भी जूनियर हाई या हाईस्कूल में कभी भी इसके बारे में कभी नहीं सोचते हैं। और फिर इसे इस नए गणितीय अवधारणा के रूप में माना जाता है, जब वास्तव में यह कुछ ऐसा होता है जिसे हम कभी भी उपयोग कर रहे हैं क्योंकि हमने अपनी उंगलियों के साथ गिनती करके संख्याओं को जोड़ना सीखा है।
अंत में, सबसे अच्छा जवाब Strilanc, जो ने कहा कि DateTime
और TimeSpan
के उपयोग वास्तव में एक affine space है, जो मूल रूप में इलाज के लिए एक संदर्भ बिंदु की जरूरत नहीं की सुविधाजनक संपत्ति है के एक कार्यान्वयन है से आया है। तो धन्यवाद, स्ट्रिलैंक। मैं क्रिसवे को स्वीकार्य उत्तर दे रहा हूं, हालांकि, वेक्टर और अंक की अवधारणा को लाने वाले पहले व्यक्ति होने के लिए, जो वास्तव में इस मामले के क्रूक्स को मिला।
(भावी पीढ़ी के लिए)
मूल प्रश्न मैं निश्चित रूप से सभी ट्रेडों का कोई प्रोग्रामिंग जैक हूँ, लेकिन मैं जानता हूँ कि दोनों PHP और नेट एक DateTime
वर्ग के अलावा (या संरचना में एक TimeSpan
वर्ग है .NET में), और मुझे लगता है कि यह कई अन्य भाषाओं और ढांचे में भी मामला है (हालांकि मैं इसे मुख्य रूप से .NET संरचनाओं के संदर्भ में लिख रहा हूं)। यह एक अजीब सवाल प्रतीत हो सकता है, लेकिन TimeSpan
अनावश्यक नहीं है?
यदि आपको लगता है कि उत्तर स्पष्ट है ("DateTime
समय में एक पूर्ण बिंदु है, जबकि TimeSpan
समय की एक सीमा है - सरल है!"), इस पर विचार करें: एक पूर्णांक को या तो संकल्पनात्मक किया जा सकता है मानों के बीच एक पूर्ण मूल्य (संख्या रेखा पर बिंदु) या दूरी - और हमें इन विभिन्न अवधारणाओं के लिए दो अलग-अलग डेटा प्रकारों की आवश्यकता नहीं है। मैं अभी भी 5 + 6 लिख सकता हूं बिना किसी अस्पष्टता के मेरे लिखने के लिए।
जब तक एक सुसंगत शून्य बिंदु संदर्भ नहीं है के रूप में, मुझे लगता है कोई कारण नहीं क्यों एक एक TimeSpan
वस्तु की आवश्यकता होगी DateTime
वस्तुओं पर अंकगणितीय आपरेशनों प्रदर्शन करने के लिए, या उनके बीच की दूरी प्राप्त करने के लिए होना चाहिए।
मुझे क्या याद आ रही है? TimeSpan
संरचना के अद्वितीय तरीकों और गुणों को केवल DateTime
में क्यों जोड़ा जा सकता है?
(अस्वीकरण: यह पसंद नहीं है कि मैं इस या कुछ भी के बारे में भावुक हूँ, मैं ठीक के रूप में वे हर समय का इरादा कर रहे हैं DateTime
और TimeSpan
वस्तुओं का उपयोग कर मैं सिर्फ एक सवाल पूछ रहा हूँ कर रहा हूँ।।)
संपादित: ठीक है, उदाहरण के अति सरल मेरी बात को वर्णन करने के:
पर विचार समीकरण 10 - 5 = 5. वन के रूप में "10 (मूल्य) पर शुरू इस पढ़ा है, बाईं ओर ले जाने के लिए 5 सकता है (अवधि), और आप 5 (मूल्य) पर समाप्त होते हैं। "
मान लीजिए, बस चीजों को आसान बनाने के लिए, हमने 1 जनवरी 1 9 00 को शून्य बिंदु दिया और हम केवल TimeSpan
वस्तुओं को केवल दिनों के संदर्भ में परिभाषित करते हैं।
फिर 10 - 5 = 5 जनवरी के रूप में, समझा जा सकता है DateTime
संदर्भ में, 11 1900 - जनवरी 6 1900 = जनवरी 6 1900 क्योंकि 11 जनवरी सिर्फ "10" है हमारी परिभाषा और 6 जनवरी तक यह ठीक है "5" है। तथ्य यह है कि हम 0 को मान के रूप में देख रहे हैं, स्पैन के रूप में पहला 5, और मान के रूप में अंतिम 5 केवल हमारे अपने वैचारिक लाभ के लिए है। मेरा मुद्दा यह है कि: केवल अंतर यह है कि आप संख्या के बारे में क्या सोचते हैं, वास्तव में यह वास्तव में नहीं है। यही कारण है कि हमारे पास अलग-अलग संरचनाएं नहीं हैं, कहें, पूर्णांक मान और पूर्णांक स्पैन - एक सादा पुराना पूर्णांक हमारे सभी अड्डों को कवर करता है।
क्या मुझे कोई समझ है?
@ हेंक: हाहा, नाटक मत करो कि यह भयानक नहीं होगा। –
10 दिनों की अवधि में कितने मंगलवार हैं? – recursive
@recursive: जैसा कि हर कोई सब कुछ कह रहा है, यह आपके शून्य बिंदु पर निर्भर करता है, जो .NET सोमवार, 01 जनवरी, 0001 (डेटटाइम.इनवैल्यू) के रूप में है - तो जवाब 2 होगा। लेकिन ऐसा लगता है कि आप कोशिश कर रहे हैं मेरे प्रश्न के बारे में कुछ बकवास करने के लिए; इसलिए मैं आपको एक बिंदु का पालन करने के लिए कहूंगा, मेरे बिंदु को स्पष्ट करने के लिए लगभग समान प्रश्न: 8 की अवधि में 5 के कितने गुणक हैं? –