我看过this answer,它解释了我如何获得相关的周数。
有没有人知道如何将格式更改为年份和周,例如YYYYWW
,即201317
。
基于第17周,如何在N周时间内获得正确的年份和周?即从本周开始的60周,包括本周?但作为YYYYWW
,在给定年份中具有正确的年份和周数?
我正在尝试在支持.NET 3.5的SSIS包2008的脚本组件中执行此操作。
我也尝试在包内的脚本任务中引用NodaTime,我可以很好地引用它并构建脚本,但是当我在我的机器上执行任务时,我获得了NodaTime的FileNotFound Exception
的.dll。
尝试使用.NET 3.5和C#实现这一目标的任何帮助都将不胜感激。
更新:以下是我最近获得的一些周数据的示例。我不知道我的确切要求,但我仍然不知道。这对我来说就像星期天开始的几个星期,并且在今年年底没有闰周。我只能猜测这是格里高利历,还是对它的修改。
答案 0 :(得分: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的linked article)返回ISO 8601 week date;这是许多政府和行业(包括进出口和跨国公司)使用的标准。
为了获得所需的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周数,只需更改weekRule
和firstWeekDay
变量即可。您可能还想玩calendar
特定文化。
关于ISO周日的维基百科文章,包含other week numbering systems的部分,例如在美国使用的部分。