Что такое функция C #, которая дает тот же результат, что и неделя FoxPro (дата, 2, 2)? - PullRequest
0 голосов
/ 25 марта 2012

Как получить дату недели в C # с тем же результатом, что и функция FoxPro Week(date, 2, 2)?

GetWeekOfYear не дает одинаковых результатов независимо от того, какой CalendarWeekRule используется.

Ответы [ 2 ]

2 голосов
/ 25 марта 2012

Недостаточно просто изменить CalendarWeekRule, вам также нужно изменить DayOfWeek.

В VFP Неделя (дата, 2, 2) определяет понедельник как FirstDayOfWeek.

Попробуйте это:

DateTimeFormatInfo.CurrentInfo.Calendar.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);

Edit: проверить это: iso 8601 неделя года в .net

1 голос
/ 26 марта 2012

Класс Неделя библиотеки Time Period для .NET включает поддержку формата недели ISO 8601:

public void CalendarWeekSample()
{
  DateTime testDate = new DateTime( 2007, 12, 31 );

  // .NET calendar week
  TimeCalendar calendar = new TimeCalendar();
  Console.WriteLine( "Calendar Week of {0}: {1}", testDate.ToShortDateString(),
                     new Week( testDate, calendar ).WeekOfYear );
  // > Calendar Week of 31.12.2007: 53

  // ISO 8601 calendar week
  TimeCalendar calendarIso8601 = new TimeCalendar(
    new TimeCalendarConfig { YearWeekType = YearWeekType.Iso8601 } );
  Console.WriteLine( "ISO 8601 Week of {0}: {1}", testDate.ToShortDateString(),
                     new Week( testDate, calendarIso8601 ).WeekOfYear );
  // > ISO 8601 Week of 31.12.2007: 1
} // CalendarWeekSample
...