Skip to content

Commit 7eb85d4

Browse files
committed
Scheduler does not use the Culture when determining the start of the week. Fixes #2293.
1 parent bd750e6 commit 7eb85d4

10 files changed

+46
-40
lines changed

Radzen.Blazor/RadzenMonthView.razor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public override DateTime StartDate
4848
{
4949
get
5050
{
51-
return Scheduler.CurrentDate.Date.StartOfMonth().StartOfWeek();
51+
return Scheduler.CurrentDate.Date.StartOfMonth().StartOfWeek(Scheduler.Culture);
5252
}
5353
}
5454

@@ -57,7 +57,7 @@ public override DateTime EndDate
5757
{
5858
get
5959
{
60-
return Scheduler.CurrentDate.Date.EndOfMonth().EndOfWeek().AddDays(1);
60+
return Scheduler.CurrentDate.Date.EndOfMonth().EndOfWeek(Scheduler.Culture).AddDays(1);
6161
}
6262
}
6363

Radzen.Blazor/RadzenWeekView.razor.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public override DateTime StartDate
6060
{
6161
get
6262
{
63-
return Scheduler.CurrentDate.Date.StartOfWeek();
63+
return Scheduler.CurrentDate.Date.StartOfWeek(Scheduler.Culture);
6464
}
6565
}
6666

@@ -69,7 +69,7 @@ public override DateTime EndDate
6969
{
7070
get
7171
{
72-
return StartDate.EndOfWeek().AddDays(1);
72+
return StartDate.EndOfWeek(Scheduler.Culture).AddDays(1);
7373
}
7474
}
7575

@@ -78,7 +78,7 @@ public override string Title
7878
{
7979
get
8080
{
81-
return $"{StartDate.ToString(Scheduler.Culture.DateTimeFormat.ShortDatePattern)} - {StartDate.EndOfWeek().ToString(Scheduler.Culture.DateTimeFormat.ShortDatePattern)}";
81+
return $"{StartDate.ToString(Scheduler.Culture.DateTimeFormat.ShortDatePattern)} - {StartDate.EndOfWeek(Scheduler.Culture).ToString(Scheduler.Culture.DateTimeFormat.ShortDatePattern)}";
8282
}
8383
}
8484

Radzen.Blazor/RadzenYearPlannerView.razor.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,14 @@ public override DateTime StartDate
6262
{
6363
if(StartMonth == Month.January)
6464
{
65-
var d = new DateTime(Scheduler.CurrentDate.Date.Year, 1, 1).StartOfWeek();
66-
if (d.DayOfWeek == DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek) d.AddDays(-7);
65+
var d = new DateTime(Scheduler.CurrentDate.Date.Year, 1, 1).StartOfWeek(Scheduler.Culture);
66+
if (d.DayOfWeek == Scheduler.Culture.DateTimeFormat.FirstDayOfWeek) d.AddDays(-7);
6767
return d;
6868
}
6969
else
7070
{
71-
var d = new DateTime(Scheduler.CurrentDate.Date.Year + (Scheduler.CurrentDate.Month < (int)StartMonth + 1 ? -1 : 0), (int)StartMonth + 1, 1).StartOfWeek();
72-
if (d.DayOfWeek == DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek) d.AddDays(-7);
71+
var d = new DateTime(Scheduler.CurrentDate.Date.Year + (Scheduler.CurrentDate.Month < (int)StartMonth + 1 ? -1 : 0), (int)StartMonth + 1, 1).StartOfWeek(Scheduler.Culture);
72+
if (d.DayOfWeek == Scheduler.Culture.DateTimeFormat.FirstDayOfWeek) d.AddDays(-7);
7373
return d;
7474
}
7575
}
@@ -81,7 +81,7 @@ public override DateTime EndDate
8181
get
8282
{
8383
var realFirstYear = StartDate.AddDays(7);
84-
var d = StartDate.AddDays(DateTime.IsLeapYear(realFirstYear.Year) || DateTime.IsLeapYear(realFirstYear.Year + 1) ? 366 : 365).EndOfWeek();
84+
var d = StartDate.AddDays(DateTime.IsLeapYear(realFirstYear.Year) || DateTime.IsLeapYear(realFirstYear.Year + 1) ? 366 : 365).EndOfWeek(Scheduler.Culture);
8585
return d;
8686
}
8787
}

Radzen.Blazor/RadzenYearTimelineView.razor.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,14 @@ public override DateTime StartDate
6262
{
6363
if (StartMonth == Month.January)
6464
{
65-
var d = new DateTime(Scheduler.CurrentDate.Date.Year, 1, 1).StartOfWeek();
66-
if (d.DayOfWeek == DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek) d.AddDays(-7);
65+
var d = new DateTime(Scheduler.CurrentDate.Date.Year, 1, 1).StartOfWeek(Scheduler.Culture);
66+
if (d.DayOfWeek == Scheduler.Culture.DateTimeFormat.FirstDayOfWeek) d.AddDays(-7);
6767
return d;
6868
}
6969
else
7070
{
71-
var d = new DateTime(Scheduler.CurrentDate.Date.Year + (Scheduler.CurrentDate.Month < (int)StartMonth + 1 ? -1 : 0), (int)StartMonth + 1, 1).StartOfWeek();
72-
if (d.DayOfWeek == DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek) d.AddDays(-7);
71+
var d = new DateTime(Scheduler.CurrentDate.Date.Year + (Scheduler.CurrentDate.Month < (int)StartMonth + 1 ? -1 : 0), (int)StartMonth + 1, 1).StartOfWeek(Scheduler.Culture);
72+
if (d.DayOfWeek == Scheduler.Culture.DateTimeFormat.FirstDayOfWeek) d.AddDays(-7);
7373
return d;
7474
}
7575
}
@@ -81,7 +81,7 @@ public override DateTime EndDate
8181
get
8282
{
8383
var realFirstYear = StartDate.AddDays(7);
84-
var d = StartDate.AddDays(DateTime.IsLeapYear(realFirstYear.Year) || DateTime.IsLeapYear(realFirstYear.Year + 1) ? 366 : 365).EndOfWeek();
84+
var d = StartDate.AddDays(DateTime.IsLeapYear(realFirstYear.Year) || DateTime.IsLeapYear(realFirstYear.Year + 1) ? 366 : 365).EndOfWeek(Scheduler.Culture);
8585
return d;
8686
}
8787
}

Radzen.Blazor/RadzenYearView.razor.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,14 @@ public override DateTime StartDate
6060
{
6161
if (StartMonth == Month.January)
6262
{
63-
var d = new DateTime(Scheduler.CurrentDate.Date.Year, 1, 1).StartOfWeek();
64-
if (d.DayOfWeek == DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek) d.AddDays(-7);
63+
var d = new DateTime(Scheduler.CurrentDate.Date.Year, 1, 1).StartOfWeek(Scheduler.Culture);
64+
if (d.DayOfWeek == Scheduler.Culture.DateTimeFormat.FirstDayOfWeek) d.AddDays(-7);
6565
return d;
6666
}
6767
else
6868
{
69-
var d = new DateTime(Scheduler.CurrentDate.Date.Year + (Scheduler.CurrentDate.Month < (int)StartMonth + 1 ? -1 : 0), (int)StartMonth + 1, 1).StartOfWeek();
70-
if (d.DayOfWeek == DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek) d.AddDays(-7);
69+
var d = new DateTime(Scheduler.CurrentDate.Date.Year + (Scheduler.CurrentDate.Month < (int)StartMonth + 1 ? -1 : 0), (int)StartMonth + 1, 1).StartOfWeek(Scheduler.Culture);
70+
if (d.DayOfWeek == Scheduler.Culture.DateTimeFormat.FirstDayOfWeek) d.AddDays(-7);
7171
return d;
7272
}
7373
}
@@ -79,7 +79,7 @@ public override DateTime EndDate
7979
get
8080
{
8181
var realFirstYear = StartDate.AddDays(7);
82-
var d = StartDate.AddDays(DateTime.IsLeapYear(realFirstYear.Year) || DateTime.IsLeapYear(realFirstYear.Year + 1) ? 366 : 365).EndOfWeek();
82+
var d = StartDate.AddDays(DateTime.IsLeapYear(realFirstYear.Year) || DateTime.IsLeapYear(realFirstYear.Year + 1) ? 366 : 365).EndOfWeek(Scheduler.Culture);
8383
return d;
8484
}
8585
}

Radzen.Blazor/Rendering/DateTimeExtensions.cs

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,17 @@ public static class DateTimeExtensions
1313
/// </summary>
1414
/// <param name="date">The date.</param>
1515
/// <returns>DateTime.</returns>
16-
public static DateTime StartOfWeek(this DateTime date)
16+
public static DateTime StartOfWeek(this DateTime date) => date.StartOfWeek(CultureInfo.CurrentCulture);
17+
18+
/// <summary>
19+
/// Starts the of week.
20+
/// </summary>
21+
/// <param name="date">The date.</param>
22+
/// <param name="info">The information.</param>
23+
/// <returns>DateTime.</returns>
24+
public static DateTime StartOfWeek(this DateTime date, CultureInfo info)
1725
{
18-
var diff = date.DayOfWeek - DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek;
26+
var diff = date.DayOfWeek - info.DateTimeFormat.FirstDayOfWeek;
1927

2028
if (diff < 0)
2129
{
@@ -24,35 +32,33 @@ public static DateTime StartOfWeek(this DateTime date)
2432

2533
return date.AddDays(-diff).Date;
2634
}
27-
2835
/// <summary>
2936
/// Starts the of month.
3037
/// </summary>
3138
/// <param name="date">The date.</param>
3239
/// <returns>DateTime.</returns>
33-
public static DateTime StartOfMonth(this DateTime date)
34-
{
35-
return new DateTime(date.Year, date.Month, 1);
36-
}
40+
public static DateTime StartOfMonth(this DateTime date) => new(date.Year, date.Month, 1);
3741

3842
/// <summary>
3943
/// Ends the of month.
4044
/// </summary>
4145
/// <param name="date">The date.</param>
4246
/// <returns>DateTime.</returns>
43-
public static DateTime EndOfMonth(this DateTime date)
44-
{
45-
return date.StartOfMonth().AddMonths(1).AddDays(-1);
46-
}
47+
public static DateTime EndOfMonth(this DateTime date) => date.StartOfMonth().AddMonths(1).AddDays(-1);
4748

4849
/// <summary>
4950
/// Ends the of week.
5051
/// </summary>
5152
/// <param name="date">The date.</param>
5253
/// <returns>DateTime.</returns>
53-
public static DateTime EndOfWeek(this DateTime date)
54-
{
55-
return date.StartOfWeek().AddDays(6);
56-
}
54+
public static DateTime EndOfWeek(this DateTime date) => date.EndOfWeek(CultureInfo.CurrentCulture);
55+
56+
/// <summary>
57+
/// Ends the of week.
58+
/// </summary>
59+
/// <param name="date">The date.</param>
60+
/// <param name="info">The information.</param>
61+
/// <returns>DateTime.</returns>
62+
public static DateTime EndOfWeek(this DateTime date, CultureInfo info) => date.StartOfWeek(info).AddDays(6);
5763
}
5864
}

Radzen.Blazor/Rendering/MonthView.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<div class="rz-view rz-month-view">
99
<div class="rz-view-header">
10-
@for (var date = StartDate; date <= StartDate.EndOfWeek(); date = date.AddDays(1))
10+
@for (var date = StartDate; date <= StartDate.EndOfWeek(Scheduler.Culture); date = date.AddDays(1))
1111
{
1212
<div class="rz-slot-header">
1313
@date.ToString("ddd", Scheduler.Culture)

Radzen.Blazor/Rendering/YearPlannerView.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
int curYear = startyear + (offSetMonth <= month ? 1 : 0);
3535
realstart = new DateTime(curYear, offSetMonth, 1);
3636
daysinmonth = DateTime.DaysInMonth(curYear, offSetMonth);
37-
date = realstart.StartOfMonth().StartOfWeek();
37+
date = realstart.StartOfMonth().StartOfWeek(Scheduler.Culture);
3838
var startMonth = realstart;
3939

4040
<div class="rz-month @(month == CurrentMonth ? "rz-state-focused" : "")">

Radzen.Blazor/Rendering/YearTimelineView.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
int curYear = startyear + (offSetMonth <= month ? 1 : 0);
3636
realstart = new DateTime(curYear, offSetMonth, 1);
3737
daysinmonth = DateTime.DaysInMonth(curYear, offSetMonth);
38-
date = realstart.StartOfMonth().StartOfWeek();
38+
date = realstart.StartOfMonth().StartOfWeek(Scheduler.Culture);
3939
var startMonth = realstart;
4040

4141
<div class="rz-month @(month == CurrentMonth ? "rz-state-focused" : "")">

Radzen.Blazor/Rendering/YearView.razor

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
int curYear = year + (offSetMonth <= month ? 1 : 0);
2424
realstart = new DateTime(curYear, offSetMonth, 1);
2525
daysinmonth = DateTime.DaysInMonth(curYear, offSetMonth);
26-
date = realstart.StartOfMonth().StartOfWeek();
26+
date = realstart.StartOfMonth().StartOfWeek(Scheduler.Culture);
2727
var currentDate = date;
2828
var currentMonth = month;
2929
var startMonth = realstart;
@@ -39,7 +39,7 @@
3939
</div>
4040

4141
<div class="rz-view-header">
42-
@for (var dateheader = StartDate; dateheader <= StartDate.EndOfWeek(); dateheader = dateheader.AddDays(1))
42+
@for (var dateheader = StartDate; dateheader <= StartDate.EndOfWeek(Scheduler.Culture); dateheader = dateheader.AddDays(1))
4343
{
4444
<div class="rz-slot-header">
4545
@dateheader.ToString("ddd", Scheduler.Culture).Substring(0,1)

0 commit comments

Comments
 (0)