Посоветуйте более оптимальный способ получения разницы во времени между днями

Написал небольшой скриптик, считающий разницу во времени между текущим моментов и будущим днем недели в секундах, т.к не нашел соответствующей команды для подобного результата. Может я плохо искал, но почему-то мне кажется, что решение моей проблему уже должно быть, может быть даже более оптимальное. Если такое есть, буду благодарен, если поделитесь. В данном скрипте я получаю кол-во секунд до какого-то определенного дня недели, чтобы потом можно было их передать таймеру. Конкретной даты нет, есть только Now и дни недели

    private DateTime currentDate;
private DateTime futureDate;
private void OnEnable()
{
    currentDate = futureDate = DateTime.Now;
    StartCoroutine(CheckTime());
}

private IEnumerator CheckTime()
{
    while (futureDate.AddDays(1d).DayOfWeek != DayOfWeek.Monday)
    {
        futureDate = futureDate.AddDays(1d);
        yield return null;
    }
    while (futureDate.AddHours(1d).DayOfWeek != DayOfWeek.Monday)
    {
        futureDate = futureDate.AddHours(1d);
        yield return null;
    }
    while (futureDate.AddMinutes(1d).DayOfWeek != DayOfWeek.Monday)
    {
        futureDate = futureDate.AddMinutes(1d);
        yield return null;
    }
    while (futureDate.AddSeconds(1d).DayOfWeek != DayOfWeek.Monday)
    {
        futureDate = futureDate.AddSeconds(1d);
        yield return null;
    }
    Debug.LogError(futureDate.DayOfWeek); // считаем до секунды, сколько осталось времени
    Debug.LogError(futureDate.TimeOfDay); // до понедельника
}

Ответы (1 шт):

Автор решения: CrazyElf

Код не проверял, но по идее должно быть как-то так:

futureDate = DateTime.Today.AddDays((7 + (int) DayOfWeek.Monday - (int) Datetime.Today.DayOfWeek) % 7)
var seconds = (futureDate - DateTime.Now).TotalSeconds;

Спасибо aepot за вторую строчку.

Переводим разницу между искомым днём недели и текущим днём недели в положительное значение и берём по модулю 7, чтобы получилось число от 0 до 6. Это и будет искомое число дней, которое нужно добавить к текущей дате (с нулевым временем), для этого берём Today. Ну и потом считаем разницу с Now и берём от неё секунды.

Ну, если я всё правильно понял.

→ Ссылка