fix: update week calculation to start from Saturday
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m2s
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m2s
This commit is contained in:
@@ -110,13 +110,34 @@ public class GetAvailableWeeksQueryHandler : IRequestHandler<GetAvailableWeeksQu
|
|||||||
|
|
||||||
private static string GetWeekNumber(DateTime date)
|
private static string GetWeekNumber(DateTime date)
|
||||||
{
|
{
|
||||||
var calendar = CultureInfo.InvariantCulture.Calendar;
|
var year = date.Year;
|
||||||
var weekOfYear = calendar.GetWeekOfYear(
|
|
||||||
date,
|
|
||||||
CalendarWeekRule.FirstDay,
|
|
||||||
DayOfWeek.Saturday);
|
|
||||||
|
|
||||||
return $"{date.Year}-W{weekOfYear:D2}";
|
// پیدا کردن اولین شنبه سال
|
||||||
|
var jan1 = new DateTime(year, 1, 1);
|
||||||
|
var jan1DayOfWeek = (int)jan1.DayOfWeek; // 0=Sunday, 1=Monday, ..., 6=Saturday
|
||||||
|
|
||||||
|
// محاسبه تعداد روزهایی که باید اضافه کنیم تا به اولین شنبه برسیم
|
||||||
|
var daysToFirstSaturday = jan1DayOfWeek == 6 ? 0 : (6 - jan1DayOfWeek + 7) % 7;
|
||||||
|
var firstSaturday = jan1.AddDays(daysToFirstSaturday);
|
||||||
|
|
||||||
|
// پیدا کردن شنبه شروع هفته جاری
|
||||||
|
var currentDayOfWeek = (int)date.DayOfWeek; // 0=Sun, 1=Mon, ..., 6=Sat
|
||||||
|
var daysToCurrentSaturday = currentDayOfWeek == 6 ? 0 : (currentDayOfWeek + 1) % 7;
|
||||||
|
var weekStartSaturday = date.Date.AddDays(-daysToCurrentSaturday);
|
||||||
|
|
||||||
|
// محاسبه شماره هفته
|
||||||
|
int weekNum;
|
||||||
|
if (weekStartSaturday < firstSaturday)
|
||||||
|
{
|
||||||
|
weekNum = 1; // هفته اول سال
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var daysSinceFirstSaturday = (weekStartSaturday - firstSaturday).Days;
|
||||||
|
weekNum = (daysSinceFirstSaturday / 7) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $"{year}-W{weekNum:D2}";
|
||||||
}
|
}
|
||||||
|
|
||||||
private static (DateTime startDate, DateTime endDate) GetWeekRange(DateTime date)
|
private static (DateTime startDate, DateTime endDate) GetWeekRange(DateTime date)
|
||||||
|
|||||||
Reference in New Issue
Block a user