繁体   English   中英

如何在DateTimePicker的月视图中获取第一天和最后一天

[英]How to get first and last day in month view at DateTimePicker

我在Forms应用程序中有一个DataTimePicker。 是否有一种简单的方法(最好是在C#中)来获得一个月的第一天和最后一天。 例如,对于12月1日,我想要获得2014年11月24日和2015年1月4日,如图所示。

DateTimePicker控件

我认为它应该是这样的(例如int year = 2014; int month = 12当月):

DateTime dt = new DateTime(year, month, 1);
int offset = ((int)dt.DayOfWeek - (int)CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek + 6) % 7 + 1;
DateTime firstDate = dt.AddDays(-offset);
DateTime lastDate = firstDate.AddDays(41);

您可以看到DateTimePicker将月份的第一行放在第一行,除了它是一周的第一天。 然后第一个月是在第二行。 因此,您必须查看一周中第一天的文化背景。

这是我尝试的另一个,它正在工作,但我看到Fratyx已经回答了。 所以我会在这里发布。

private static void Main(string[] args)
{
    DateTime date = new DateTime(2014, 12, 1);
    var firstAndLastDays = getFirstDateInDatePicker(date);
}

private static Tuple<int, int> getFirstDateInDatePicker(DateTime date)
{
    int totalDaysInMonth = DateTime.DaysInMonth(date.Year, date.Month);
    int totalDiff = TOTAL_DAYS - totalDaysInMonth;
    DateTime firstDayOfMonth = new DateTime(date.Year, date.Month, 1);
    DateTime lastDayOfMonth = new DateTime(date.Year, date.Month, totalDaysInMonth);
    int subtractor = (6 + (int)firstDayOfMonth.DayOfWeek) * -1;
    return new Tuple<int, int>(firstDayOfMonth.AddDays(subtractor).Day,
        lastDayOfMonth.AddDays(totalDiff + subtractor).Day);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM