using System;
using System.Globalization;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public static DateTime GetEndOfMonth(DateTime start, bool workingDaysOnly)
{
int year = start.Year;
int month = start.Month;
int daysInMonth = CultureInfo.CurrentCulture.DateTimeFormat.Calendar.GetDaysInMonth(year, month);
var dt = new DateTime(year, month, daysInMonth);
if (workingDaysOnly)
{
switch (dt.DayOfWeek)
{
case DayOfWeek.Saturday:
dt = dt.AddDays(-1);
break;
case DayOfWeek.Sunday:
dt = dt.AddDays(-2);
break;
default:
break;
}
}
return dt;
}
public static void Main()
{
DateTime endOfMonth = GetEndOfMonth(DateTime.Today, true);
Console.WriteLine(endOfMonth.ToString("d"));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uR2xvYmFsaXphdGlvbjsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwoKcHVibGljIGNsYXNzIFRlc3QKewogICAgcHVibGljIHN0YXRpYyBEYXRlVGltZSBHZXRFbmRPZk1vbnRoKERhdGVUaW1lIHN0YXJ0LCBib29sIHdvcmtpbmdEYXlzT25seSkKICAgIHsgCiAgICAgICAgaW50IHllYXIgPSBzdGFydC5ZZWFyOwogICAgICAgIGludCBtb250aCA9IHN0YXJ0Lk1vbnRoOwogICAgICAgIGludCBkYXlzSW5Nb250aCA9IEN1bHR1cmVJbmZvLkN1cnJlbnRDdWx0dXJlLkRhdGVUaW1lRm9ybWF0LkNhbGVuZGFyLkdldERheXNJbk1vbnRoKHllYXIsIG1vbnRoKTsKICAgICAgICB2YXIgZHQgPSBuZXcgRGF0ZVRpbWUoeWVhciwgbW9udGgsIGRheXNJbk1vbnRoKTsKICAgICAgICBpZiAod29ya2luZ0RheXNPbmx5KQogICAgICAgIHsKICAgICAgICAgICAgc3dpdGNoIChkdC5EYXlPZldlZWspCiAgICAgICAgICAgIHsgCiAgICAgICAgICAgICAgICBjYXNlIERheU9mV2Vlay5TYXR1cmRheToKICAgICAgICAgICAgICAgICAgICBkdCA9IGR0LkFkZERheXMoLTEpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSBEYXlPZldlZWsuU3VuZGF5OgogICAgICAgICAgICAgICAgICAgIGR0ID0gZHQuQWRkRGF5cygtMik7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBkdDsKICAgIH0KCglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CiAgICAgICAgRGF0ZVRpbWUgZW5kT2ZNb250aCA9IEdldEVuZE9mTW9udGgoRGF0ZVRpbWUuVG9kYXksIHRydWUpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKGVuZE9mTW9udGguVG9TdHJpbmcoImQiKSk7Cgl9Cn0=