0

おはようございます、

ユーザーが選択した日付と日付範囲を取得するために、カレンダー フォーム コントロールを使用しています。カレンダーのクリックイベントで、フォームを更新して、選択した開始日と終了日をユーザーに表示します。

更新の一環として、テキスト フィールドを更新して、曜日と日付を表示します。

txtStartDate.Text = WeekdayName(Weekday(startDate)) + " " + startDate

ただし、取得している平日は1日です(火曜日は月曜日、月曜日は日曜日、日曜日は土曜日として表示されます)。

これを回避するために、次のことを行いました。

txtStartDate.Text = WeekdayName(Weekday(startDate) - 1) + " " + startDate

これは月曜日から土曜日まで機能しましたが、カレンダーで日曜日を選択すると、値が -1 の日付を表示できないため、クラッシュします (後から考えると明らかです!)。

週の最初の曜日を日曜日ではなく月曜日に設定する方法を見つけようとしましたが、無駄でした。カレンダー コントロールに対してこれを実行しましたが、これは表示される開始日のみを変更し、日の値は変更しません。CurrentCulture の設定を変更してみました:

Thread.CurrentThread.CurrentCulture = New CultureInfo("en-UK")
Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-UK") 

これもうまくいきません。

月曜日を Weekday(startDate) の 0 日目に設定するにはどうすればよいですか?

4

2 に答える 2

3

問題は、Weekdayがデフォルトで日曜日が週の最初の日であるのに対し、WeekdayNameがデフォルトで現在のシステムのデフォルトになっていることです。

これを試して:

txtStartDate.Text = WeekdayName(Weekday(startDate, FirstDayOfWeek.System)) + " " + startDate
于 2013-05-20T11:04:46.787 に答える
0

これを試して:

Dim thisCulture As Globalization.CultureInfo = Globalization.CultureInfo.CurrentCulture
Dim dayOfWeek As DayOfWeek = thisCulture.Calendar.GetDayOfWeek(startDate)
Dim dayName As String = thisCulture.DateTimeFormat.GetDayName(dayOfWeek)
于 2013-05-20T11:15:22.163 に答える