2012-03-25 1 views
0

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

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

+3

Как о вас сообщите нам, что функция Foxpro's Week() должна делать, какой вывод вы ожидаете от g et, и что возвращает 'GetWeekOfYear'? –

+0

Извините, никакой родной функции в C#, ее нужно будет преобразовать в C# напрямую. Вам нужна помощь в этом конверсии? – DRapp

+0

Ну, если это funtion уже существует в сети, было бы полезно, иначе мне придется это сделать. спасибо. – Dejo

ответ

2

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

В VFP неделя (дата, 2, 2) указывает понедельник как FirstDayOfWeek.

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

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

Edit: проверить это: iso 8601 week of year in .net

+0

http://msdn.microsoft.com/en-us/library/aa978670%28v=vs.71%29.aspx –

+0

этот документ объясняет все и решает проблему. спасибо – Dejo

1

Неделя класс Time Period Library for .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 
+0

Спасибо, ваша библиотека очень полезна. – Dejo