मैं एक साधारण कैलेंडर बनाने के लिए क्या करना चाहता हूं, और मैं एक विशिष्ट महीने के पहले सप्ताह के पहले दिन को ढूंढना चाहता हूं। मेरा कैलेंडर सोमवार -> रविवार कैलेंडर है और निम्न कोड काम करता है, लेकिन जैसा कि आप देख सकते हैं कि यह अच्छा नहीं है। कैलेंडर में पहली तारीख कैसे प्राप्त करें इस पर कोई भी बेहतर विचार है।कैलेंडर का पहला दिन ढूंढना
var now = new DateTime(Year, Month, 1);
now = now.AddDays(1-(int)now.DayOfWeek);
now = now.Day > 15 ? now : now.AddDays(-7);
कैलेंडर इस तरह देख खत्म हो जाएगा:
| < | Jan 2011 | > |
------------------------------------
| Mo | Tu | We | Th | Fr | Sa | Su |
|[27]| 28 | 29 | 30 | 31 | 01 | 02 |
| 03 | 04 | 05 | 06 | 07 | 08 | 09 |
| .. | .. | .. | .. | .. | .. | .. |
| .. | .. | .. | .. | .. | .. | .. |
| 31 | 01 | 02 | 03 | 04 | 05 | 06 |
और यह "छवि" में यह [27] की तारीख है कि मैं खोजने की कोशिश कर रहा हूँ है।
समाधान (मिले मैं बेहतर/पाश करने के लिए क्लीनर तो गणना):
public DateTime FirstDay()
{
var date = new DateTime(Date.Year, Date.Month, 1);
while (true)
{
if (date.DayOfWeek == DayOfWeek.Monday)
return date;
date = date.AddDays(-1);
}
return date;
}
public DateTime LastDay()
{
var date = new DateTime(Date.Year, Date.Month,
DateTime.DaysInMonth(Date.Year, Date.Month));
while (true)
{
if (date.DayOfWeek == DayOfWeek.Sunday)
return date;
date = date.AddDays(1);
}
return date;
}
/बी आर एंड्रियास
+1, के लिए ASCII कला। –
+1 # वाह, असल में मैंने अपने कॉलेज में सी के साथ एक कंसोल ऐप में एक समान कैलेंडर बनाया। –