2012-12-06 12 views
8

अगर मैं var olddate = DateTime.Parse('05/13/2012');अगले महीने के पहले में डेटटाइम सेट करना?

है और मैं var newdate = (the first of the month after olddate, 06/01/2012 in this case);

मैं क्या कोड होगा प्राप्त करना चाहते हैं? मैंने महीने + 1 सेट करने की कोशिश की लेकिन महीने में कोई सेटटर नहीं है।

+0

आपका उदाहरण अनुरूप होना प्रतीत नहीं होते हैं । क्या आप समझा सकते हैं कि यह दिसंबर 2012 के पांचवें के बाद जनवरी 2013 का 6 वां होना चाहिए? – Oded

+0

@ ओह क्षमा करें, मैंने इसे अमेरिकी दिनांक शैली स्वरूपित किया है, मिमी/डीडी/yyyy – proseidon

+1

एक संपादन किया गया है इसलिए तारीख गैर अमेरिकी लोगों के लिए अस्पष्ट नहीं है। – Oded

उत्तर

20

इस प्रयास करें:

olddate = olddate.AddMonths(1); 
DateTime newDate = new DateTime(olddate.Year, olddate.Month, 1, 
    0, 0, 0, olddate.Kind); 
+0

निंजा संपादन ftw। 'डेटटाइम' की 'दयालु' को भी संरक्षित रखना याद रखें। बहुत से लोग इसे अनदेखा करते हैं, लेकिन यदि आप इसे अनदेखा करते हैं और फिर अपना 'डेटटाइम' कोड को पास करते हैं जो नहीं करता है, तो कुछ अप्रत्याशित हो सकता है। –

7

यह कभी बाहर के रेंज त्रुटि नहीं देगा, और DateTime की तरह सुरक्षित करेगा।

dt = dt.AddMonths(1.0); 
dt = new DateTime(dt.Year, dt.Month, 1, 0, 0, 0, dt.Kind); 
2

आपको महीने और वर्ष को सही तरीके से परिभाषित करना है, और 1ª दिन सेट करने के बाद। इस प्रयास करें: उदाहरण के

// define the right month and year of next month. 
var tempDate = oldDate.AddMonths(1); 

// define the newDate with the nextmonth and set the day as the first day :) 
var newDate = new DateTime(tempDate.Year, tempDate.Month, 1); //create 
+0

मुझे 10 सेकंड तक इसे हराया। एक उत्थान है – Kevin

0

बहुत सारे ... आपके posion लेने;)

var olddate = DateTime.Parse("05/12/2012"); 

int currentDay = ((DateTime)olddate).Day; 
//can always replace the while loop and just put a 1 for current day 
while(currentDay != 1) 
    currentDay--; 

var newdate = (DateTime.Parse(olddate.AddMonths(1).Month.ToString() + "/" + currentDay.ToString() + "/" + olddate.AddMonths(1).Year.ToString())); 
0

प्रयास करें इस सरल एक लाइनर:

var olddate = DateTime.Parse("05/13/2012"); 
var newdate = olddate.AddDays(-olddate.Day + 1).AddMonths(1); 
// newdate == DateTime.Parse("06/01/2012") 
संबंधित मुद्दे