سؤال

كيف يمكنني الحصول على تاريخ الأحد الأخير من العام في C#؟؟هل ستكون فئة التقويم الميلادي مفيدة؟

هل كانت مفيدة؟

المحلول

لا أعرف ما إذا كانت هناك طريقة لذلك ولكن الطريقة البسيطة هي التحقق من آخر 7 أيام من شهر ديسمبر، بدءًا من اليوم الحادي والثلاثين والعد التنازلي.

تحديث: في الواقع إذا تم ترقيم أيام الأسبوع مثل هذا:

0 Sun, 1 Mon, ... 6 Sat

ثم

lastSunday = 31 - DayOfWeek(31, 12, 2009) // pseudocode

نصائح أخرى

وليس اجمل حل ولكن ينبغي العمل:

int year = 2009;
DateTime lastSunday = new DateTime(year, 12, 31);
while (lastSunday.DayOfWeek != DayOfWeek.Sunday)
{
    lastSunday = lastSunday.AddDays(-1);
}

واعتقد انه يمكن استخدام تمثيل صحيح للتعداد DayOfWeek لذلك:

DateTime endOfYear = new DateTime(DateTime.Now.Year, 12, 31);
DateTime lastSunday = endOfYear.AddDays(-(int)endOfYear.DayOfWeek);

ويمكنك معرفة أي يوم من أيام الأسبوع 31 ديسمبر هو. ثم (إن لم يكن الاحد) حساب الظهر ...

for (int y=2009; y<=2018; y++)
{
  DateTime dt = new DateTime(y, 12, 31); // last day of year
  dt = dt.AddDays(-(int)dt.DayOfweek); // sun == 0, so then no change
  Console.WriteLine(dt.ToString("dddd dd-MM-yyyy"));
}

وعذرا لكنني لم يكن لديك C # الإصدار هو إذا رأيت هنا للحصول على نسخة VB. وأظن عليك أن تكون قادرا على تحويله.

وهذا يتوقف ... هل تريد اليوم الأخير من السنة التي هو الأحد أو الأحد من الأسبوع الأخير من السنة؟ اعتمادا على كيفية أسابيع تتحدد في بلدك، في الأسبوع الأخير من السنة قد ترتفع إلى ستة أيام في العام المقبل.

إذا كنت تريد أولا، يمكنك أن تبدأ فقط في 31 ديسمبر والعودة حتى تجد الاحد.

إذا كنت ترغب في الثانية، سيكون لديك لاستخدام أسلوب System.Globalizartion.Calendar.GetWeekOfYear لمعرفة أين يبدأ الأسبوع الأول من العام المقبل، واتخاذ يوم قبل ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top