Диапазон дат от номера недели до года - PullRequest
0 голосов
/ 29 марта 2009

У меня есть 2 выпадающих списка 1 с номерами 1 с годами. Я хочу извлечь диапазон дат из этих данных.

Итак:

Номер недели 13 года 2009 даст:

понедельник, 23 марта 2009 г. вторник 24 марта 2009 ...

VB.Net предпочтительнее, но растворение C # также в порядке.

Edit: Хорошо, наверное, я должен был упомянуть, что это для европейских свиданий.

Ответы [ 4 ]

5 голосов
/ 29 марта 2009
CultureInfo curCulture = CultureInfo.CurrentCulture;

DateTime targetDate = curCulture.Calendar.AddWeeks(new DateTime([year], 1, 1), [Week]);

DayOfWeek targetWeekDay =
    curCulture.Calendar.GetDayOfWeek(targetDate);

DateTime targetBeginningOfWeek = targetDate.AddDays(-1*Convert.ToInt16(targetWeekDay));

targetBeginningOfWeek будет содержать первый день этой недели, добавить 7 дней и получить остаток дня на этой неделе

3 голосов
/ 05 сентября 2011

Попробуйте использовать следующие функции:

Public Function Week2Date1(ByVal Week2Date2 As Date) As Date
    Week2Date1 = DateAdd(DateInterval.Day, -4, Week2Date2)

End Function

Public Function Week2Date2(ByVal WeekNo As Integer) As Date
    Week2Date2 = DateSerial(Now.Year, 1, (WeekNo) * 7)

End Function

Я использую их для определения даты понедельника и пятницы номера каждой недели.

где:

  • в функции Week2Date2 вернет номер недели недели и
  • в функции Week2Date1 возвращает номер понедельника недели из значения даты, возвращенного Week2Date2.
2 голосов
/ 07 сентября 2012

Ниже код получает диапазон дат из номера недели и года. Но написано на Java.
Надеюсь, это поможет.

   System.out.println("date Range from weekNumber and year but in Java");
   System.out.println(); // print a blank line

   // get the input from the user
   Scanner sc = new Scanner(System.in);

   System.out.print("Enter the week : ");
   int weekNumber  = sc.nextInt(); 
   System.out.print("Enter the Year: ");
   int year = sc.nextInt() ;



   Calendar cal = Calendar.getInstance();
   //cal.setTime(new Date());

   cal.set(Calendar.YEAR, year);
   cal.set(Calendar.WEEK_OF_YEAR, weekNumber);

   SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

   cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
   System.out.println(formatter.format(cal.getTime())); // start date

   cal.add(Calendar.DAY_OF_WEEK, 6);
   System.out.println(formatter.format(cal.getTime())); // end date
1 голос
/ 21 апреля 2010
var date = DateTime.MinValue + 2009.Years() + 13.Weeks();

с использованием Fluent DateTime проекта в Codeplex.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...