Как я получаю число месяца от числа года и недели в c#?

Я выяснил, в чем проблема, я добавляю 2 ICollection<RequestTracking> в Employee

public class Employee
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string MiddleName { get; set; }
    public string LastName { get; set; }
    public DateTime Birthdate { get; set; }
    public Gender Gender { get; set; }
    public AppUser User { get; set; }
    public ICollection<EmployeeStatus> EmployeesStatus { get; set; }
    public ICollection<Resignation> Resignations { get; set; }
    public ICollection<RequestTracking> RequestTrackingsFrom { get; set; }
    public ICollection<RequestTracking> RequestTrackingsTo { get; set; }
}
11
задан Loris 18 March 2009 в 17:25
поделиться

7 ответов

Это - то, что я закончил тем, что делал:

static int GetMonth(int Year, int Week)
{
    DateTime tDt = new DateTime(Year, 1, 1);

    tDt.AddDays((Week - 1) * 7);

    for (int i = 0; i <= 365; ++i)
    {
        int tWeek = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(
            tDt, 
            CalendarWeekRule.FirstDay, 
            DayOfWeek.Monday);
        if (tWeek == Week)
            return tDt.Month;

        tDt = tDt.AddDays(1);
    }
    return 0;
}

Я предпочел бы что-то более простое, но оно работает :)

4
ответ дан 3 December 2019 в 06:48
поделиться

Это также не зависело бы в день недели?

2
ответ дан 3 December 2019 в 06:48
поделиться

Если Вы предположите, что первый день Вашего определения недели является тем же днем как 1-й день года, то это будет работать:

int year = 2000;
int week = 9;
int month = new DateTime(year, 1, 1).AddDays(7 * (week - 1)).Month;

Очевидно, истинный ответ зависел бы от того, как Вы определяете первый день недели, и как Вы определяете, как неделя попадает в месяц, когда он перекрывает больше чем один.

9
ответ дан 3 December 2019 в 06:48
поделиться

Другая проблема, с которой Вы могли столкнуться, состоит в том, что большинство лет не запускается в начале недели, которая смещает все.

1
ответ дан 3 December 2019 в 06:48
поделиться

Вы наклоняетесь. Вам требуется, по крайней мере, день, в который запускается 1-я неделя (или когда неделя запускается), для получения точного ответа.

0
ответ дан 3 December 2019 в 06:48
поделиться

Я думаю, что Вы предполагаете, что "неделя" является любой группой 7 последовательных дней. Это не. Учитывая год (2008), Неделя (5), Вы могли быть или в январе или в Febuary, в зависимости от того, когда Ваша "неделя" запускается.

0
ответ дан 3 December 2019 в 06:48
поделиться

Вы наклоняетесь. Неделя может запуститься через один месяц и конец в другом.

0
ответ дан 3 December 2019 в 06:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: