C# 从当前日期(SSIS脚本任务)加上未来的N周,以YYYYWW的形式获取周数和年份

C# 从当前日期(SSIS脚本任务)加上未来的N周,以YYYYWW的形式获取周数和年份,c#,.net,ssis,nodatime,C#,.net,Ssis,Nodatime,我已经了解了如何获得相关周数的原因 有人知道我如何将格式更改为像这样的年和周yyyww即201317 在第17周的基础上,如何在N周的时间内获得正确的年和周?i、 e.从本周算起的60周,包括本周?但是作为yyyww,在给定的年份中有正确的年和周数 我试图在SSIS包2008的脚本组件中实现这一点,该包最多支持.NET 3.5 我还尝试在包内的脚本任务中引用NodaTime,我可以很好地引用它并构建脚本,但是当涉及到仅在我的机器上执行任务时,我会得到NodaTime.dll的FileNotFou

我已经了解了如何获得相关周数的原因

有人知道我如何将格式更改为像这样的年和周
yyyww
201317

在第17周的基础上,如何在N周的时间内获得正确的年和周?i、 e.从本周算起的60周,包括本周?但是作为
yyyww
,在给定的年份中有正确的年和周数

我试图在SSIS包2008的脚本组件中实现这一点,该包最多支持.NET 3.5

我还尝试在包内的脚本任务中引用NodaTime,我可以很好地引用它并构建脚本,但是当涉及到仅在我的机器上执行任务时,我会得到NodaTime.dll的
FileNotFound异常

如果您仅使用.NET3.5和C#就试图实现这一目标,我们将不胜感激

更新:以下是我最近收到的一些周数据的示例。我不知道我的确切要求,我仍然不知道。在我看来,这几周从周日开始,今年年底没有闰周。我只能猜测这是公历还是公历的修改


有一种非常简单的方法,可以使用
系统计算当前周。全球化。文化信息

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的)返回;这是许多政府和行业(包括进出口和跨国公司)使用的标准

要获得所需的
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
变量即可。您可能还想玩转特定文化的日历


Wikipedia关于ISO周日期的文章包含一节,例如在美国使用的部分。

我刚刚意识到您链接到一个问题,该问题提供了大部分相同的信息……这与ISO-8601不太相符。请参阅(Noda Time在此支持ISO-8601行为,但仅支持该行为。因此,如果OP想要精确的ISO行为,使用Noda Time将是一个很好的选择。否则,BCL应该可以。)感谢您提供有关格式和其他周数的信息以及您的示例。我认为我不能使用ISO-8601,但这仍然是有用的信息。@Pricey:这不是“你可以使用什么”的问题,而是“你的需求是什么”的问题。您已经给出了示例,但没有规则。您的需求来自何处?它们有多精确?编辑:我刚刚重读了一个问题,你说你基本上没有需求,只是一些例子。我强烈建议您在获得需求之前不要再做进一步的工作。@JonSkeet很棒的信息!我以前使用过BCL的周计算,但不知道它不完全是ISO 8601。我会给野田佳彦举个例子,但我还没有必要使用它=\你需要准确地计算出你所谈论的周编号方案。请澄清。@JonSkeet我做了一个更新,试图帮助澄清我的目标,谢谢。这实际上并没有给出足够的细节。作为一个很好的例子,你对2007-12-31的一年和一周有什么期望?根据ISO-8601,这将是2008年第53周。在这里,一个实际的规范会很有帮助。如果你没有,你需要一个。@JonSkeet抱歉,我现在不能说,它们只适用于当前和未来年份。他们用它们来预测从今年开始的未来3年,但我认为他们没有足够的信息来给我计算出实际需求是什么:(他们是谁)?必须有人知道你应该遵守什么规则。如果我是你,我会强烈反对——你可以很容易地想出一些适用于你给出的所有示例的东西,但随后违反了未说明的规则:(