मुझे महीने का आखिरी दिन कैसे मिलेगा?


324

मैं C # में महीने का अंतिम दिन कैसे पा सकता हूं?

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


2
@ मर्क: मैं क्या मांग सकता हूं? मुझे लगता है कि आपके खुद के जवाब के लिए एक विस्तार विधि की आवश्यकता नहीं है।
abatishchev

4
अंतिम दिन केवल महीने के लिए विशिष्ट नहीं है, आपको वर्ष भी चाहिए। २०१० का अंतिम दिन
२eb

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

जवाबों:


653

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

DateTime.DaysInMonth(1980, 08);

28
सार्वजनिक स्थैतिक DateTime ConvertToLastDayOfMonth (दिनांक समय तिथि) {नई DateTime (दिनांक.Year, date.Month, DateTime.DaysInMonth (date.Year, date.Month)) लौटाएं; } महीने के आखिरी दिन को एक तारीख प्रारूप में प्राप्त करने के लिए
regisbsb

175
var lastDayOfMonth = DateTime.DaysInMonth(date.Year, date.Month);

@ हेनक वास्तव में मैंने इसे हमारे स्रोत में एक जगह से खींचा जो कि से बनाता DateTimeहै lastDayOfMonth। ईमानदारी से या तो रास्ता पूरी तरह से अच्छी तरह से काम करता है। यह एक पांडित्य का तर्क है कि कौन सा तरीका बेहतर है। मैंने इसे दोनों तरीकों से किया है और दोनों एक ही उत्तर देते हैं।
मार्क

37

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

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

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);

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);

6

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

int maxdt = (new DateTime(dtfrom.Year, dtfrom.Month, 1).AddMonths(1).AddDays(-1)).Day;

यह मुझे आश्चर्य है कि सरल विधि के बजाय:, DateTime.DaysInMonthकिसी को इसे प्राप्त करने के लिए इस अपठनीय और जटिल तरीके की तलाश क्यों करनी चाहिए !? - लेकिन एक वैध समाधान के रूप में स्वीकार्य है;)।
shA.t

5

से DateTimePicker:

पहली मुलाकात:

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));

2

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

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;
}

2
// Use any date you want, for the purpose of this example we use 1980-08-03.
var myDate = new DateTime(1980,8,3);
var lastDayOfMonth = new DateTime(myDate.Year, myDate.Month, DateTime.DaysInMonth(myDate.Year, myDate.Month));

यह उत्तर केवल प्रश्नकर्ता के उदाहरण पर प्रतिक्रिया देता है। अधिक व्यापक उत्तर अधिक सहायक होगा।
स्कॉट लॉरेंस

आप इनपुट मूल्य के रूप में अपनी इच्छित तिथि का उपयोग कर सकते हैं, इसलिए आप इस समाधान को अपनी इच्छित तिथि पर लागू कर सकते हैं।
जैस्पर रिसीसुव

1
यह कुछ तारीखों के लिए विफल हो जाएगा, कोशिश करें var myDate = new DateTime(1980, 1, 31);(29 वें रिटर्न)
हंस के

हंस के st आईएनजी, आप सही हैं। यह विधि विफल हो जाएगी यदि अगले महीने में वर्तमान की तुलना में कम दिन हैं। मुझे लगता है कि DateTime.DaysInMonth () का उपयोग करने का सबसे आसान तरीका है, लेकिन यह स्वीकृत उत्तर है, इसलिए मेरा उत्तर हटा दिया जाना चाहिए।
जैस्पर रिसीसुव

-1

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

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

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


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