将日,周和年转换为date

我已经给出了一个excel文档,其中logging了工作时间信息,这个文档包含了一些在Visual Studio中使用SSIS读取的列,然后将这些信息写入数据库。

星期和年份列包含星期数和年份,星期一至星期五的列包含有关在一周中的某一天的某个任务上花费了多less工作小时的信息。

我想要做的是采取WeekNr,年和date,并将其转换为date。 我一直试图通过使用一个脚本组件来转换date编号,星期编号和年份到一个date,但到目前为止我还没有能够从列中获取天数。 在我看来,如果在开始和结束date中使用该date的第一个和最后一个date,这将是最好的。

所以我的问题是,如果有人知道如何做到这一点,或者如果我应该尝试一种不同的方法。

脚本组件:

public override void Input0_ProcessInputRow(Input0Buffer Row, CultureInfo cultureInfo, int day ) { DateTime firstDayOfYear = new DateTime(Int32.Parse(Row.Jaar), 1, 1); int firstWeek = cultureInfo.Calendar.GetWeekOfYear(firstDayOfYear, cultureInfo.DateTimeFormat.CalendarWeekRule, cultureInfo.DateTimeFormat.FirstDayOfWeek); int dayOffSet = day - (int)cultureInfo.DateTimeFormat.FirstDayOfWeek + 1; Row.TaskDates = firstDayOfYear.AddDays((Int32.Parse(Row.Week) - (firstWeek + 1)) * 7 + dayOffSet + 1); } 

基于这个答案 ,我想你想要类似下面的东西。 此结果为您提供了星期一的date,所以您可以根据星期几来添加星期几。

 DateTime jan1 = new DateTime(Int32.Parse(Row.Jaar), 1, 1); int daysOffset = DayOfWeek.Monday - jan1.DayOfWeek; DateTime firstMonday = jan1.AddDays(daysOffset); var cal = CultureInfo.CurrentCulture.Calendar; int firstWeek = cal.GetWeekOfYear(firstMonday, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday); var weekNum = Int32.Parse(Row.Week); if (firstWeek <= 1) { weekNum -= 1; } var mondaysDate = firstMonday.AddDays(weekNum * 7); var tuesdaysDate = mondaysDate.AddDays(1); 
Interesting Posts