2

我已经看到了这个答案,它解释了我如何获得相关的周数。

有谁知道我怎么能像这样将格式更改为 Year 和 Week ,YYYYWW201317.

基于它是第 17 周,我怎样才能在 N 周时间内获得正确的年份和周数?即从当前周算起的 60 周,包括当前周?但是YYYYWW与该给定年份中正确的年份和周数一样?

我正在尝试在支持高达 .NET 3.5 的 SSIS 包 2008 的脚本组件中执行此操作。

我还尝试在包内的脚本任务中引用 NodaTime,我可以很好地引用它并构建脚本,但是在我的机器上执行任务时,我得到了一个FileNotFound Exception用于 NodaTime.dll 的文件。

任何尝试仅使用 .NET 3.5 和 C# 来实现此目的的帮助将不胜感激。

更新:这是我最近获得的一些周数据的示例。我不知道我的确切要求,我仍然不知道。在我看来,这就像星期天开始,而今年年底没有闰周。我只能猜测这是公历还是它的修改。

在此处输入图像描述

4

1 回答 1

2

有一种非常简单的方法可以使用以下方法计算当前周System.Globalization.CultureInfo

using System.Globalization;

CalendarWeekRule weekRule = CalendarWeekRule.FirstFourDayWeek;
DayOfWeek firstWeekDay = DayOfWeek.Monday;
Calendar calendar = System.Threading.Thread.CurrentThread.CurrentCulture.Calendar;

int currentWeek = calendar.GetWeekOfYear(DateTime.Now, weekRule, firstWeekDay)

上述方法将几乎(参见 Jon Skeet 的链接文章)返回ISO 8601 周日期;这是许多政府和行业(包括进出口和跨国公司)使用的标准。

为了获得所需的格式YYYYWW,只需使用:

String myYYYYWW = String.Format("{0:0000}{1:00}", DateTime.Now.Year, currentWeek);

要获得N未来的几周,您可以让DateTime班级为您计算...

DateTime myFutureWeek = DateTime.Now.AddDays(N * 7); // add N weeks

// ... steps outlined above ...

int futureWeek = calendar.GetWeekOfYear(myFutureWeek, weekRule, firstWeekDay)

如果您想偏离几乎 ISO 的周数,只需更改weekRulefirstWeekDay变量。您可能还想玩弄calendar特定文化。

关于 ISO 星期日期的 Wikipedia 文章包含其他星期编号系统的部分,例如在美国使用的。

于 2013-04-26T23:55:56.937 回答