आज

2015-09-29 14 views
9

मैं आज के लिए किसी निश्चित तिथि की तुलना और यहाँ करना चाहते से किसी निश्चित तिथि की तुलना कैसे शर्त है: अगर प्रदान की तिथि से बड़ा या आज से पहले 6 महीने के बराबर है, और सच वापसी झूठीआज

वापसी कोड:

string strDate = tbDate.Text; //2015-03-29 
if (DateTime.Now.AddMonths(-6) == DateTime.Parse(strDate)) //if given date is equal to exactly 6 months past from today (change == to > if date has to be less 6 months) 
{ 
    lblResult.Text = "true"; //this doesn't work with the entered date above. 
} 
else //otherwise give me the date which will be 6 months from a given date. 
{ 
    DateTime dt2 = Convert.ToDateTime(strDate); 
    lblResult.Text = "6 Months from given date is: " + dt2.AddMonths(6); //this works fine 
} 
  • 6 अगर महीने या अधिक से अधिक 6 महीने से मैं एक हालत
  • के लिए क्या चाहते हैं 6 महीने से कम एक और शर्त है है। तो 6 महीने दिन के लिए एक विशेष समय है, जो बहुत बिल्कुल तारीख/आप समय होने की संभावना नहीं है के साथ आप एक और DateTime दे देंगे घटाकर -
+0

कैसे सटीक के अनुसार = साथ> = या < == की जगह? क्या दिन का समय गिनता है? –

+0

अगर आज समय – CDrosos

+0

@WaiHaLee के साथ परिवर्तन की गणना नहीं करता है। धन्यवाद। – Si8

उत्तर

11

आपका पहला समस्या यह है कि आप DateTime.Now बजाय DateTime.Today का उपयोग कर रहे है पार्स किया गया है इस पोस्ट के बाकी हिस्सों के लिए, मुझे लगता है कि आपके द्वारा पाई जाने वाली मान वास्तव में एक तिथि है, इसलिए आप मध्यरात्रि के समय के साथ DateTime के साथ समाप्त हो जाते हैं। (बेशक, मेरे बहुत पक्षपातपूर्ण विचार में, a library which supports "date" as a first class concept का उपयोग करना बेहतर होगा ...)

अगली समस्या यह है कि आप मानते हैं कि आज से 6 महीने घटाकर और इसे एक निश्चित तिथि से तुलना करने के बराबर है निश्चित तिथि के लिए 6 महीने और आज के साथ इसकी तुलना। वे एक ही ऑपरेशन नहीं हैं - कैलेंडर अंकगणित बस इस तरह काम नहीं करता है। आपको यह काम करना चाहिए कि आप इसे किस तरह से काम करना चाहते हैं, और सुसंगत रहें।

DateTime target = DateTime.Parse(tbDate.Text); 
DateTime today = DateTime.Today; 
DateTime sixMonthsAgo = today.AddMonths(-6); 
if (sixMonthsAgo >= target) 
{ 
    // Six months ago today was the target date or later 
} 
else 
{ 
    // ... 
} 

नोट है कि आप केवल गणना के प्रति सेट DateTime.Today (या DateTime.Now आदि) का मूल्यांकन करना चाहिए एक बार - अन्यथा आप मिल सकता है: - और नहीं समतुल्य रूप

DateTime start = DateTime.Parse(tbDate.Text); 
DateTime end = start.AddMonths(6); 
DateTime today = DateTime.Today; 
if (end >= today) 
{ 
    // Today is 6 months or more from the start date 
} 
else 
{ 
    // ... 
} 

या वैकल्पिक रूप से उदाहरण के लिए: यह मूल्यांकन के बीच बदलता है।

इस

DateTime s = Convert.ToDateTime(tbDate.Text); 
s = s.Date; 

if (DateTime.Today.AddMonths(-6) == s) //if given date is equal to exactly 6 months past from today (change == to > if date has to be less 6 months) 
{ 
lblResult.Text = "true"; //this doesn't work with the entered date above. 
} 

साथ

+0

क्षमा करें, यहां शर्त है: यदि प्रदान की गई तारीख आज से 6 महीने से अधिक या बराबर है, तो सत्य वापस लौटें और झूठी वापसी करें। – Si8

+0

@ SiKni8: 6 महीने * बाद में * आज से, या 6 महीने * पहले * आज से? और क्या आप समझते हैं कि "दी गई तारीख से 6 महीने आज या बाद में" अलग है? आज से 6 महीने पहले –

+0

। क्षमा करें – Si8

1

कोशिश अपनी आवश्यकताओं

+0

's = s.Date + ts' का क्या मतलब है? 's = s.Date' एक ही परिणाम देगा। – juharr

+0

नहीं, यह केवल तारीख से ही लेता है और समय देता है 00:00:00 – CDrosos

+0

'ts' 0 है। इसलिए इसे जोड़ने से कुछ भी नहीं बदलेगा। – juharr

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