How can I determine the week number of a certain date?

后端 未结 3 2105
小鲜肉
小鲜肉 2020-11-30 11:38

I\'m trying to make a calendar using wpf. By using itemsPanel and more, I have a grid with 7 columns(sunday-saturday) and 6 rows(week# of month). If i can find the starting

3条回答
  •  無奈伤痛
    2020-11-30 12:19

    You must use Calendar.GetDayOfWeek and Calendar.GetWeekOfYear in preference to writing yourself.

    You can guarantee that if you write any date / time handling code yourself it will contain faults and won't work in different locales.

    public class Row
    {
        public string MonthWeek { get; set; }
        public string Year { get; set; }
        public string Month { get; set; }
        public string Day { get; set; }
        public string WeekOfYear { get; set; }
    }
    
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            var l = new List();
            DateTime startDate = DateTime.Now;
            DateTime d = new DateTime(startDate.Year, startDate.Month, 1);
            var cal = System.Globalization.DateTimeFormatInfo.CurrentInfo.Calendar;
            var ms = cal.GetWeekOfYear(new DateTime(d.Year, d.Month, 1), System.Globalization.CalendarWeekRule.FirstDay, System.DayOfWeek.Sunday);
            for (var i = 1; d.Month == startDate.Month; d = d.AddDays(1))
            {
                var si = new Row();
                var month_week = (d.Day / 7) + 1;
                si.MonthWeek = month_week.ToString();
                si.Month = d.Year.ToString();
                si.Year = d.Month.ToString();
                si.Day = d.Day.ToString();
                si.WeekOfYear = cal.GetWeekOfYear(d, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString();
                l.Add(si);
            }
            dataGrid1.ItemsSource = l;
        }
    }
    

    together with the obligatory DataGrid in the XAML:

        
    

提交回复
热议问题