什么是C#函数,它提供与FoxPro Week(date,2,2)相同的结果?

时间:2012-03-25 17:57:07

标签: c# foxpro

如何在C#中获取与FoxPro函数Week(date, 2, 2)相同结果的星期日期?

无论使用哪个GetWeekOfYear

CalendarWeekRule都没有给出相同的结果。

2 个答案:

答案 0 :(得分:2)

仅仅更改CalendarWeekRule是不够的,您还需要更改DayOfWeek。

在VFP中,Week(date,2,2)将Monday指定为FirstDayOfWeek。

试试这个:

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

编辑: 看看这个:iso 8601 week of year in .net

答案 1 :(得分: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