दिलचस्प पोस्ट
एक स्थैतिक पुस्तकालय को एक साझा पुस्तकालय में कनवर्ट करें? एक वेब अनुप्रयोग में "साइलेंट" प्रिंटिंग एक ही ऑब्जेक्ट को संदर्भित करने के लिए विभिन्न तत्वों पर एक ही नियंत्रक का उपयोग करना Linq क्वेरी ग्रुप द्वारा और पहले आइटम का चयन जेबस जावा ईई कंटेनर और एक एक्जिक्यूटर्स सर्विस विज़ुअल सी ++ 2008 में एक यूटीएफ -8 स्ट्रिंग कैसे बनाऊं UINavigationController बल बारी बारी से जावा एपलेट में सही ढंग से कोडबेस और संग्रह कैसे निर्दिष्ट करें? एंड्रॉइड फोन पर अभिविन्यास की जांच करें कार्यक्रमबद्ध युग्म ब्लूटूथ डिवाइस से जुड़ें सख्त और चेतावनियों का उपयोग क्यों करें? किसी प्रपत्र के सभी क्षेत्रों को साफ़ करने के लिए jQuery / Javascript फ़ंक्शन समान मूल नीति को दरकिनार करने के तरीके आईओएस 9: कैसे प्रोग्राम ध्वनि पट्टी पॉपअप दिखाए बिना मात्रा प्रोग्राम को बदलने के लिए? टिल्ड को फंक्शन नाम से पहले सी # में क्या होता है?

महीने के सप्ताह की एनएटी में गणना करें

क्या किसी दिए गए तिथि के लिए सप्ताह संख्या वापस करने के लिए .नेट पुस्तकालयों का एक आसान तरीका है? उदाहरण के लिए, Year = 2010, Month = 1, Day = 25 इनपुट, सप्ताह संख्या के लिए आउटपुट 5

निकटतम मैंने पाया था Calendar.GetWeekOfYear गेट वेकऑफ़ियर, जो लगभग वहां है

जावा में एक डेट स्ट्रिंग फॉर्मेट "डब्ल्यू" है, जो महीने में हफ्ते देता है, लेकिन मैं .NET के बराबर कुछ नहीं देख सकता।

वेब के समाधान से एकत्रित समाधान "महीने के सप्ताह की एनएटी में गणना करें"

ऐसा करने के लिए कोई रास्ता नहीं बनाया गया है लेकिन यहां एक विस्तार विधि है जिसे आपके लिए काम करना चाहिए:

 static class DateTimeExtensions { static GregorianCalendar _gc = new GregorianCalendar(); public static int GetWeekOfMonth(this DateTime time) { DateTime first = new DateTime(time.Year, time.Month, 1); return time.GetWeekOfYear() - first.GetWeekOfYear() + 1; } static int GetWeekOfYear(this DateTime time) { return _gc.GetWeekOfYear(time, CalendarWeekRule.FirstDay, DayOfWeek.Sunday); } } 

उपयोग:

 DateTime time = new DateTime(2010, 1, 25); Console.WriteLine(time.GetWeekOfMonth()); 

आउटपुट:

 5 

आप अपनी आवश्यकताओं के अनुसार GetWeekOfYear को बदल सकते हैं

ऐसा करने के लिए कोई सीधा अंतर्निहित तरीके नहीं है, लेकिन यह बहुत आसानी से किया जा सकता है यहां एक एक्सटेंशन विधि है जिसे आसानी से वर्ष-आधारित सप्ताह की तारीख को प्राप्त करने के लिए इस्तेमाल किया जा सकता है:

 public static int GetWeekNumber(this DateTime date) { return GetWeekNumber(date, CultureInfo.CurrentCulture); } public static int GetWeekNumber(this DateTime date, CultureInfo culture) { return culture.Calendar.GetWeekOfYear(date, culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek); } 

हम उसके बाद महीने-आधारित सप्ताह संख्या की गणना करने के लिए इसका उपयोग कर सकते हैं, जैसे जेसन शो की तरह। एक संस्कृति के अनुकूल संस्करण ऐसा कुछ दिख सकता है:

 public static int GetWeekNumberOfMonth(this DateTime date) { return GetWeekNumberOfMonth(date, CultureInfo.CurrentCulture); } public static int GetWeekNumberOfMonth(this DateTime date, CultureInfo culture) { return date.GetWeekNumber(culture) - new DateTime(date.Year, date.Month, 1).GetWeekNumber(culture) + 1; // Or skip +1 if you want the first week to be 0. } 

शीर्षक भ्रामक है। प्रश्न वास्तव में महीने के कैलेंडर सप्ताह के नंबर के बारे में है (सप्ताह में अगर आप कैलेंडर पर पंक्तियों की गिनती की संख्या), वास्तविक सप्ताह संख्या नहीं।

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

 VB: Function WeekNumber(TargetDate As Date) As Integer Return (TargetDate.Day - 1) \ 7 + 1 End Function C#: public int WeekNumber(DateTime TargetDate) { return (TargetDate.Day - 1) / 7 + 1; } 

जैसा कि यहां निर्दिष्ट किया गया है: http://forums.asp.net/t/1268112.aspx

आप उपयोग कर सकते हैं:

 public static int Iso8601WeekNumber(DateTime dt) { return CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(dt, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); } public static int GetWeekOfMonth(DateTime dt) { int weekOfYear = Iso8601WeekNumber(dt); if (dt.Month == 1) { //week of year == week of month in January //this also fixes the overflowing last December week return weekOfYear; } int weekOfYearAtFirst = Iso8601WeekNumber(dt.AddDays(1 - dt.Day)); return weekOfYear - weekOfYearAtFirst + 1; } 

ध्यान लगा कि आपकी ज़रूरतें अलग-अलग हो सकती हैं क्योंकि कुछ एल्गोरिथम विकल्प हैं। Ie सोमवार से शुक्रवार तक फरवरी के अंत में भी मार्च के पहले हफ्ते में या क्या मानदंड एक महीने के "पहले" सप्ताह को परिभाषित करता है? आईएसओ 8601: 2004 "सप्ताह का महीना" के लिए कोई परिभाषा नहीं देता है

@Svish

वीबी संस्करण:

 Public Shared Function GetWeekNumber(ByVal [date] As DateTime) As Integer Return GetWeekNumber([date], CultureInfo.CurrentCulture) End Function Public Shared Function GetWeekNumber(ByVal [date] As DateTime, ByVal culture As CultureInfo) As Integer Return culture.Calendar.GetWeekOfYear([date], culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek) End Function Public Shared Function GetWeekNumberOfMonth(ByVal [date] As DateTime) As Integer Return GetWeekNumberOfMonth([date], CultureInfo.CurrentCulture) End Function Public Shared Function GetWeekNumberOfMonth(ByVal [date] As DateTime, ByVal culture As CultureInfo) As Integer Return GetWeekNumber([date], culture) - GetWeekNumber(New DateTime([date].Year, [date].Month, 1), culture) + 1 ' Or skip +1 if you want the first week to be 0. End Function 

यह मेरा समाधान है:

  static string GetWeekNumber() { var weekNumber = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Sunday) - CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(DateTime.Now.AddDays(1 - DateTime.Now.Day), CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Sunday) + 1; switch (weekNumber) { case 1 : return "First"; case 2: return "Second"; case 3: return "Third"; default: return "Fourth"; } } 
 public int WeekCalc(DateTime dt) { CultureInfo ciCurr = CultureInfo.CurrentCulture; int weekNum = ciCurr.Calendar.GetWeekOfYear(dt, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); return weekNum; } 

यह एक पुरानी धागा है, लेकिन मुझे इस तरह कुछ चाहिए और यह यही है कि मैं इसके साथ आया हूं।

 public static int WeekOfMonth(this DateTime date) { DateTime firstDayOfMonth = new DateTime(date.Year, date.Month, 1); int firstDay = (int)firstDayOfMonth.DayOfWeek; if (firstDay == 0) { firstDay = 7; } double d = (firstDay + date.Day - 1) / 7.0; return (int)Math.Ceiling(d); } 

नोट: यदि आप सोमवार को सप्ताह के पहले दिन के रूप में उपयोग करना चाहते हैं, तो यह कार्य करना चाहिए। यदि आप रविवार को रविवार को शुरू करना चाहते हैं, तो यह मार्च, 2015 के दूसरे सप्ताह में और शायद अन्य तिथियों में विफल हो जाता है। सोमवार 9 मार्च, 2015 दूसरे सप्ताह के पहले दिन है। इस दिनांक के लिए रिटर्न "3" से ऊपर की गणना

एक बार जब आप महीने के पहले दिन के डेऑफ़वेक को देखते हैं, तो आप पूर्णांक अंकगणित का उपयोग करके महीने के सप्ताह प्राप्त कर सकते हैं।

 static class DateTimeExtensions { // Assumes that in current culture week starts on Sunday public static int GetWeekOfMonth(this DateTimeOffset time) { DateTimeOffset first = new DateTimeOffset(time.Year, time.Month, 1, 0, 0, 0, time.Offset); int firstSunday = (7 - (int)first.DayOfWeek) % 7 + 1; int weekOfMonth = 1 + (time.Day + 7 - firstSunday) / 7; return weekOfMonth; } } 

कुछ सरल … 🙂

 private int WeeksNumber() { int daysInMonth = DateTime.DaysInMonth(YourYear, YourMonth); DateTime date = new DateTime(Year, Month, 1); switch (daysInMonth) { case 28: { if (date.DayOfWeek == DayOfWeek.Monday) { return 4; } else { return 5; } } case 29: { return 5; } case 30: { if (date.DayOfWeek == DayOfWeek.Sunday) { return 6; } else { return 5; } } case 31: { if (date.DayOfWeek == DayOfWeek.Sunday || date.DayOfWeek == DayOfWeek.Saturday) { return 6; } else { return 5; } } default: return 5; } } 

यहां एक सरल विकल्प है, यदि आप पहले सप्ताह के पहले 7 दिनों का मानना ​​चाहते हैं, भले ही महीने एक रविवार को शुरू न हो:

 class Program { static void Main(string[] args) { var dates = Enumerable.Range(0, 10) .Select(r => new DateTime(2015, 10, 1).AddDays(r)) .Select(q => new { Date = q, WeekOfMonth = q.WeekOfMonth() }); foreach(var item in dates) { Console.WriteLine("Date: {0:ddd MM-dd-yyyy}, WOM: {1}", item.Date, item.WeekOfMonth); } var final = Console.ReadLine(); } } public static class DateTimeExtensions { public static int WeekOfMonth(this DateTime d) { var isExact = (d.Day % 7 == 0); var offset = isExact ? 0 : 1; return (int)Math.Floor(d.Day / 7.0) + offset; } } 
  Dim mdt As Date = txtDT.Text Dim weekNum As Integer = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(mdt, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Sunday) - CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(GetFirstDayOfMonth(mdt), CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Sunday) + 1 Response.Write(weekNum)