首页 > 解决方案 > 使用 C# 从 DatePicker 获取周 ID

问题描述

以下代码获取weekid

 CultureInfo ciCurr = CultureInfo.CurrentCulture;
  int Weekid = ciCurr.Calendar.GetWeekOfYear(dt, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);

当我尝试日期 31/12/2018 时,它显示了第 53 周 ,但在我的 DatePicker 中显示第 1 周

参考 DatePicker 的图片

在此处输入图像描述

问题:

哪一个是正确的?

如何使其在 C# 代码或 jquery 代码中的更改相同?

标签: javascriptc#jqueryasp.net-mvc-5

解决方案


试试这个代码..

来源:https ://stackoverflow.com/a/11154921/1997983

 var d = new DateTime(2018, 12, 31);
            CultureInfo cul = CultureInfo.CurrentCulture;

            var firstDayWeek = cul.Calendar.GetWeekOfYear(
                d,
                CalendarWeekRule.FirstDay,
                DayOfWeek.Monday);

            int weekNum = cul.Calendar.GetWeekOfYear(
                d,
                CalendarWeekRule.FirstDay,
                DayOfWeek.Monday);

            int year = weekNum == 52 && d.Month == 1 ? d.Year - 1 : d.Year;
            Console.WriteLine("Year: {0} Week: {1}", year, weekNum);

根据 ISO-8601,它在第 53 周返回 1

http://blogs.msdn.com/b/shawnste/archive/2006/01/24/iso-8601-week-of-year-format-in-microsoft-net.aspx

如果您查看 2018 年 12 月 31 日这一周,它将从星期六的 12 月 30 日开始。从今年到 2018 年,它将仅包含两个日期.. 30 和 31。其余所有 5 个日期都来自明年,即 2019 年。因此它返回 1 作为周数,根据 ISO-8601 标准是正确的。


推荐阅读