コードをもう一度更新しました。コードへ
public DateTime GetFirstDayOfFirstWeek(int year, CultureInfo culture)
{
// calc first date of this week
var firstDateOfWeek = new DateTime(year, 1, 10);
while (firstDateOfWeek.DayOfWeek != culture.DateTimeFormat.FirstDayOfWeek)
firstDateOfWeek = firstDateOfWeek.AddDays(-1);
// get current week number
int weekNum = culture.Calendar.GetWeekOfYear(firstDateOfWeek, culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek);
// remove all weeks except the first one
return firstDateOfWeek.AddDays(7 - (weekNum * 7));
}
var date = GetFirstDayOfFirstWeek(2009, new CultureInfo("sv-se"));
注:私はまだCultureInfo
を使用し、引数としてルールを取っていませんよ。これを行うことで、私はあなたに賛成しています:) .NETで組み込みのCulture機能を使用する方法を学ぶ必要があります。それはあなたが多くの時間を節約するのに役立ちます。
(あなたはまだ文化を使用したくない場合は、単にコードを修正)
新規ユーザーは、単に投票ダウンしません。なぜ彼に学ぶチャンスを与えるのか説明してください。 – jgauffin
"StartDate for the year"とはどういう意味ですか?毎年1月1日は同じです。1月1日が過ぎている曜日を探していますか? –
@AnnaLear、StartDate of yearは2009年の例を挙げるとFirstDayOfWeekはmonday、FirstWeekOfYEarはFirst Full Weekですので、実際の週は1月5日から開始し、StartDateは2009年1月5日です。これを計算できる一般的な方法がいいでしょう。 – user936405