किसी डेटटाइम से दिन घटाएं


142

मेरे C # प्रोग्राम में निम्न कोड है।

DateTime dateForButton =  DateTime.Now;  
dateForButton = dateForButton.AddDays(-1);  // ERROR: un-representable DateTime

जब भी मैं इसे चलाता हूं, मुझे निम्न त्रुटि मिलती है:

जोड़ा या घटाया गया मूल्य एक संयुक्त राष्ट्र के प्रतिनिधित्व योग्य DateTime में परिणाम करता है।
पैरामीटर नाम: मान

Iv'e ने इस त्रुटि संदेश को पहले कभी नहीं देखा, और समझ नहीं आता कि मैं इसे क्यों देख रहा हूं। अब तक पढ़े गए उत्तरों से, मुझे विश्वास है कि मैं दिनों को घटाने के लिए एक ऐड ऑपरेशन में -1 का उपयोग कर सकता हूं, लेकिन जैसा कि मेरा सवाल दिखाता है कि मैं जो करने का प्रयास कर रहा हूं, वह ऐसा नहीं है।


काम करना चाहिए, क्या यह समस्या क्षेत्र है?
V4Vendetta

1
यह है काम करने के लिए, इस के साथ किसी भी समस्या नहीं दिख रहा है ...
Tigran

12
यह त्रुटि आमतौर पर तब होती है जब आप किसी अंतराल को घटाने की कोशिश DateTime.MinValueकरते हैं या आप इसमें कुछ जोड़ना चाहते हैं DateTime.MaxValue(या आप इस न्यूनतम-अधिकतम अंतराल के बाहर की तारीख को तत्काल करने की कोशिश करते हैं)। क्या आप वाकई MinValueकहीं असाइन नहीं कर रहे हैं ?
साइबरवुड

1
साइबरडूड, आपकी टिप्पणी वास्तव में उत्तर है। मैं आपकी टिप्पणी पर कैसे वोट कर सकता हूं और इसे उत्तर के रूप में निर्दिष्ट कर सकता हूं।
बुएना

1
कृपया अपने कोड की पंक्तियों 2 और 3 के बीच कोड
पणगीतिस कानवोस

जवाबों:


70

यह त्रुटि आमतौर पर तब होती है जब आप किसी अंतराल को घटाने की कोशिश DateTime.MinValueकरते हैं या आप इसमें कुछ जोड़ना चाहते हैं DateTime.MaxValue(या आप इस न्यूनतम-अधिकतम अंतराल के बाहर की तारीख को तत्काल करने की कोशिश करते हैं)। क्या आप वाकई MinValueकहीं असाइन नहीं कर रहे हैं ?


287
DateTime dateForButton = DateTime.Now.AddDays(-1);

14
यह उत्तर, विषय शीर्षक का उत्तर दें। इसे कभी भी कम नहीं करना चाहिए। ज्यादातर लोग यहाँ google से आते हैं। यदि कोई इस उत्तर से सहमत नहीं है, तो उसे विषय शीर्षक पर एक संपादन की पेशकश करनी चाहिए। ¬¬
MarceloBarbosa

महीनों तक मेरे लिए काम किया।
डेविड जोन्स


38

आप निम्नलिखित कोड का उपयोग कर सकते हैं:

dateForButton = dateForButton.Subtract(TimeSpan.FromDays(1));

4
यदि दिनांक Date.MinValue है तो यह भी विफल हो जाएगा। AddDays (-1) ठीक वैसे ही काम करता है
Panagiotis Kanavos

7

dateTime.AddDays(-1) से कि एक दिन घटाना नहीं है dateTimeसंदर्भ। यह एक नया उदाहरण लौटाएगा, एक दिन मूल संदर्भ से घटाया जाएगा।

DateTime dateTime = DateTime.Now;
DateTime otherDateTime = dateTime.AddDays(-1);

यह समझाने के लिए कि यह ओपी की समस्या को कैसे हल करेगा? लगभग कोई भी कोड लिख सकता है, यह आसान हिस्सा है। (हालांकि, इस मामले में, मैं वास्तव में यह नहीं देखता कि यह ओपी की समस्या को कैसे हल करेगा।)
चौपास्टमीडनाइट


4

AddDays विधि के लिए ऑब्जेक्ट (यानी गंतव्य चर) स्रोत के समान नहीं हो सकता है।

के बजाय:

DateTime today = DateTime.Today;
today.AddDays(-7);

इसके बजाय यह प्रयास करें:

DateTime today = DateTime.Today;
DateTime sevenDaysEarlier = today.AddDays(-7);

1
यदि हम अन्य मौजूदा उत्तरों को देख रहे हैं तो यह उत्तर वास्तव में एक नया बिंदु नहीं लाता है।
इसुका

1

सीधे दिनांक ऑब्जेक्ट से सीधे दिनों की संख्या कम होने के बजाय, पहले दिनांक मान प्राप्त करें और फिर दिन घटाएं। नीचे दिए गए उदाहरण देखें:

DateTime SevenDaysFromEndDate = someDate.Value.AddDays(-1);

यहां, someDate, DateTime का एक प्रकार है।


0

AddDays(-1)जब तक मैंने महीनों पार करने की कोशिश नहीं की तब तक मेरे लिए काम करना । जब मैंने 2017-01-01 से 2 दिन घटाने की कोशिश की तो परिणाम 2016-00-30 था। यह महीने के बदलाव को सही तरीके से नहीं संभाल सका (हालांकि साल ठीक लग रहा था)।

मैं इस्तेमाल किया date = Convert.ToDateTime(date).Subtract(TimeSpan.FromDays(2)).ToString("yyyy-mm-dd"); और कोई मुद्दा नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.