2010-03-22 17 views
209

मुझे सी # में महीने का अंतिम दिन कैसे मिल सकता है?मुझे एक महीने का आखिरी दिन कैसे मिल सकता है?

उदाहरण के लिए, यदि मेरे पास दिनांक 03/08/1980 है, तो मुझे 8 महीने का अंतिम दिन कैसे मिलेगा (इस मामले में 31)?

+2

@ मार्क: मैं क्या पूछ सकता हूं? मुझे लगता है कि आपके स्वयं के उत्तर को विस्तार विधि की आवश्यकता नहीं है। – abatishchev

+4

अंतिम दिन केवल महीने के लिए विशिष्ट नहीं है, आपको वर्ष की भी आवश्यकता है। फरवरी 2010 का अंतिम दिन 28 है, लेकिन फरवरी 2008 का अंतिम दिन 2 9। – Guffa

+0

@abatishchev यह एक विस्तार विधि _require_ नहीं है, लेकिन सवाल वास्तव में इसके लिए नहीं पूछता है। हालांकि, यह कम से कम मेरे लिए बहुत अच्छा और बहुत अधिक पठनीय है, इसे देखने के लिए। विस्तार विधि किसी भी चीज़ से अधिक सुझाव था। कोई भी समाधान एक विस्तार विधि में काम करेगा, सिर्फ मेरा नहीं। – Mark

उत्तर

414

महीने आप इस तरह मिलता है, जो रिटर्न 31 के अंतिम दिन:

DateTime.DaysInMonth(1980, 08); 
+14

सार्वजनिक स्थैतिक डेटटाइम कनवर्ट टॉलास्टडेऑफमोन्थ (दिनांक समय दिनांक) { नया दिनांक समय लौटाएं (दिनांक। प्रिय, दिनांक। माह, दिनांक समय। डेसइनमोनथ (दिनांक। प्रिय, दिनांक। माह)); } महीने के अंतिम दिन को दिनांक प्रारूप – regisbsb

65
DateTime firstOfNextMonth = new DateTime(date.Year, date.Month, 1).AddMonths(1); 
DateTime lastOfThisMonth = firstOfNextMonth.AddDays(-1); 
+1

"एक महीने का अंतिम दिन कैसे प्राप्त करें?"। डेटटाइम। दिन में महीना (वर्ष, महीने) वापस लौटाएगा कि महीने में कितने दिन हैं, यह "महीने के आखिरी दिन क्या है" के लिए एक ही जवाब देगा। आपका तरीका काम करता है, लेकिन मुझे लगता है कि एक साधारण चीज़ के लिए बहुत अधिक कोड है। – rochasdv

9

घटाएँ अगले महीने के पहले से एक दिन:

DateTime lastDay = new DateTime(MyDate.Year,MyDate.Month+1,1).AddDays(-1); 

इसके अलावा, मामले में आप दिसंबर के लिए भी काम करने के लिए इसकी जरूरत:

DateTime lastDay = new DateTime(MyDate.Year,MyDate.Month,1).AddMonths(1).AddDays(-1); 
138
var lastDayOfMonth = DateTime.DaysInMonth(date.Year, date.Month); 
+0

@ हेंक असल में मैंने इसे हमारे स्रोत में एक जगह से खींच लिया जो 'LastDayOfMonth' से 'डेटटाइम' बनाता है। ईमानदारी से किसी भी तरह से पूरी तरह से अच्छी तरह से काम करता है। यह एक pedantic तर्क है कि जिस तरह से बेहतर है। मैंने इसे दोनों तरीकों से किया है और दोनों एक ही जवाब देते हैं। – Mark

+0

मार्क, संख्या।आपका परिणाम एक 'int' है, मेरा' डेटटाइम 'है। इसके बारे में हमारे बारे में चश्मा सबसे अच्छा पढ़ा (अनुमान लगाया)। –

1

मैं डॉन ' टी # पता है, लेकिन, अगर यह पता चला है कि इसे प्राप्त करने के लिए एक सुविधाजनक एपीआई तरीका नहीं है, तो आप तर्कों का पालन करके ऐसा कर सकते हैं:

today -> +1 month -> set day of month to 1 -> -1 day 

बेशक, यह मानता है कि आपके पास उस प्रकार का गणित है।

23

आप तारीख चाहते हैं, एक महीने और एक साल को देखते हुए, इस बारे में सही लगता है:

public static DateTime GetLastDayOfMonth(this DateTime dateTime) 
{ 
    return new DateTime(dateTime.Year, dateTime.Month, DateTime.DaysInMonth(dateTime.Year, dateTime.Month)); 
} 
6

आप इस कोड से किसी भी महीने की अंतिम तारीख पा सकते हैं:

var now = DateTime.Now; 
var startOfMonth = new DateTime(now.Year, now.Month, 1); 
var DaysInMonth = DateTime.DaysInMonth(now.Year, now.Month); 
var lastDay = new DateTime(now.Year, now.Month, DaysInMonth); 
8

आप कोड की एक लाइन द्वारा महीने के अंतिम दिन पा सकते हैं:

DateTime first_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, 1); 

की अंतिम तिथि::

DateTime last_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, DateTime.DaysInMonth(DateTimePicker.Value.Year, DateTimePicker.Value.Month)); 
+0

में प्राप्त करने के लिए यह मुझे आश्चर्यचकित कर रहा है कि सरल विधि के बजाय: 'डेटटाइम। डेज़ इन मॉन्थ', किसी को इसे प्राप्त करने के लिए इस अपठनीय और जटिल तरीके को क्यों देखना चाहिए !? - लेकिन एक वैध समाधान के रूप में स्वीकार्य है;)। –

3

DateTimePicker:

पहले की तारीख से किसी विशिष्ट कैलेंडर में एक महीने का अंतिम दिन प्राप्त करने के लिए - और एक विस्तार विधि में -

public static int DaysInMonthBy(this DateTime src, Calendar calendar) 
{ 
    var year = calendar.GetYear(src);     // year of src in your calendar 
    var month = calendar.GetMonth(src);     // month of src in your calendar 
    var lastDay = calendar.GetDaysInMonth(year, month); // days in month means last day of that month in your calendar 
    return lastDay; 
} 
1

int maxdt = (new DateTime(dtfrom.Year, dtfrom.Month, 1).AddMonths(1).AddDays(-1)).Day; 
संबंधित मुद्दे