C#学习教程:如何确定某个日期的周数?分享


如何确定某个日期的周数?

我正在尝试使用wpf制作日历。 通过使用itemsPanel和更多,我有一个网格有7列(星期六 – 星期六)和6行(星期#月)。 如果我可以通过获取工作日和周数(月份)找到每月第一个的起始位置,我如何找到周数(每月0-5)? 我也不能以某种方式从那里填写日历? 我迷路了,我不知道还有什么可以尝试的。

public partial class SchedulePage : Page { MainWindow _parentForm; public int dayofweek; public SchedulePage(MainWindow parentForm) { InitializeComponent(); _parentForm = parentForm; // DateTime date = new DateTime(year, month, day); _parentForm.bindings = new BindingCamper(); _parentForm.bindings.schedule.Add(new Schedule { WeekNo = (int) getWeekNumber(), WeekDay = dayofweek }); DataContext = _parentForm.bindings; // lblTest.Content = dates(2011, 10, 27); } public double getWeekNumber() { dayofweek = getWeekDay(2011, 10, 31); double h = dayofweek / 7; double g = Math.Floor(h); return g; } public int getWeekDay(int year, int month, int day) { //year = 2011; //month = 10; //day = 27; int[] t = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 }; // year -= month < 3; return (year + year / 4 - year / 100 + year / 400 + t[month - 1] + day) % 7; } 

您必须使用Calendar.GetDayOfWeek和Calendar.GetWeekOfYear ,而不是自己编写。

您可以保证,如果您自己编写任何日期/时间处理代码,它将包含错误,并且不能在不同的区域设置中工作。

 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; } } 

与XAML中的强制DataGrid一起:

   

您可以使用Globalization中的Calendar.GetWeekOfYear来执行此操作。

这是它的MSDN文档: http : //msdn.microsoft.com/en-us/library/system.globalization.calendar.getweekofyear.aspx

您应该将CultureInfo.CurrentCulture的相应文化属性传递给GetWeekOfYear以便您正确匹配当前文化。

例:

 int GetWeekOfYear(DateTime date) { return Calendar.GetWeekOfYear( date, CultureInfo.CurrentCulture.DateTimeFormat.CalendarWeekRule, CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek ); } 

您可以轻松地将其修改为DateTime上的扩展方法:

上述就是C#学习教程:如何确定某个日期的周数?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

 static int GetWeekOfYear(this DateTime date) { return Calendar.GetWeekOfYear( date, CultureInfo.CurrentCulture.DateTimeFormat.CalendarWeekRule, CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek ); } 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1269809.html

(0)
上一篇 1天前
下一篇 1天前

精彩推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注