使用 C# 从 DatePicker 获取周 ID

Posted

技术标签:

【中文标题】使用 C# 从 DatePicker 获取周 ID【英文标题】:Get week ID from DatePicker using C# 【发布时间】:2018-12-23 16:52:20 【问题描述】:

获取weekid的代码如下

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

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

参考 DatePicker 的图片

问题:

哪一个是正确的?

如何在 C# 代码或 jquery 代码中改变它?

【问题讨论】:

两者都是正确的,注意 C# 中的 CalendarWeekRule.FirstFourDayWeek 参数指定如何确定一年中的第一周。至于 jQuery 使用什么以及如何更改它 - 我不知道。 CalendarWeekRule 我试图更改规则,但输出提供给我相同的结果。任何其他方式 @Pravin jQuery 正在做什么似乎是 CalendarWeekRule.FirstDay 【参考方案1】:

试试这个代码..

来源:https://***.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 标准是正确的。

【讨论】:

以上是关于使用 C# 从 DatePicker 获取周 ID的主要内容,如果未能解决你的问题,请参考以下文章

从星期一而不是星期日开始 antd RangePicker (datepicker) 周

Ant 设计:从 onChange 中的 datepicker 获取 Id

如何从 Android 中的 DatePicker 小部件中获取日期?

在asp.net c#中的datepicker中使用数据库日期

mat datepicker angular6中的周选择

从 SQLite 数据库读取日期时间值并使用 WPF 将其分配给 C# 中的 datepicker