如何在C#中获取与FoxPro函数Week(date, 2, 2)
相同结果的星期日期?
GetWeekOfYear
, CalendarWeekRule
都没有给出相同的结果。
答案 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