Как ко дню на прошлой неделе добавить 30 дней?

Nekro

Client
Регистрация
01.08.2020
Сообщения
223
Благодарностей
22
Баллы
18
Здравствуйте.

Мне необходимо к прошлой неделе добавить 30 дней так, чтобы при переходе на следующий месяц подсчёт дней начинался сначала нового месяца и был учёт максимального количества дней в текущем месяце.

Пример: 2+30=2 (в этом месяце всего 30 дней)

Как это грамотно реализовать?

Получаю сегодняшний день так: {-TimeNow.Day-}
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 433
Благодарностей
1 280
Баллы
113
Здравствуйте.

Мне необходимо к прошлой неделе добавить 30 дней так, чтобы при переходе на следующий месяц подсчёт дней начинался сначала нового месяца и был учёт максимального количества дней в текущем месяце.

Пример: 2+30=2 (в этом месяце всего 30 дней)

Как это грамотно реализовать?

Получаю сегодняшний день так: {-TimeNow.Day-}
Здравствуйте.

Мне необходимо к прошлой неделе добавить 30 дней так, чтобы при переходе на следующий месяц подсчёт дней начинался сначала нового месяца и был учёт максимального количества дней в текущем месяце.

Пример: 2+30=2 (в этом месяце всего 30 дней)

Как это грамотно реализовать?

Получаю сегодняшний день так: {-TimeNow.Day-}
1. Получаем UNIX Время сегодняшнего дня - 1604932154 (Mon Nov 09 2020 16:29:14 UTC+0200 (Восточная Европа, стандартное время))
2. Минусуем в секундах две недели - 1604932154-1209600= 1603722554 (Mon Oct 26 2020 16:29:14 UTC+0200 (Восточная Европа, стандартное время))
3. Добавляем + 30 дней в секундах к нужной нам дате - 1603722554+2592000 = 1606314554 (Wed Nov 25 2020 16:29:14 UTC+0200 (Восточная Европа, стандартное время))


Либо хорошая статья с датой и временем.
 
  • Спасибо
Реакции: Nekro

Nekro

Client
Регистрация
01.08.2020
Сообщения
223
Благодарностей
22
Баллы
18
1. Получаем UNIX Время сегодняшнего дня - 1604932154 (Mon Nov 09 2020 16:29:14 UTC+0200 (Восточная Европа, стандартное время))
2. Минусуем в секундах две недели - 1604932154-1209600= 1603722554 (Mon Oct 26 2020 16:29:14 UTC+0200 (Восточная Европа, стандартное время))
3. Добавляем + 30 дней в секундах к нужной нам дате - 1603722554+2592000 = 1606314554 (Wed Nov 25 2020 16:29:14 UTC+0200 (Восточная Европа, стандартное время))


Либо хорошая статья с датой и временем.
А как получить количество дней в следующем/текущем месяце? Или тоже через UNIX всё делать?
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 433
Благодарностей
1 280
Баллы
113
  • Спасибо
Реакции: Nekro

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
399
Баллы
63
Здравствуйте.

Мне необходимо к прошлой неделе добавить 30 дней так, чтобы при переходе на следующий месяц подсчёт дней начинался сначала нового месяца и был учёт максимального количества дней в текущем месяце.

Пример: 2+30=2 (в этом месяце всего 30 дней)

Как это грамотно реализовать?

Получаю сегодняшний день так: {-TimeNow.Day-}
Если правильно понял вашу задачу:
C#:
//получаем сегодняшнюю дату вида 09.11.2020 00:00:00
DateTime dt = DateTime.Today;
//прибавляемые дни
int days = 30;
//добавляем дни к первоначальной дате
return dt.AddDays(days);
Возвращенная дата будет соответствовать дате календаря, т.е. количество дней в текущем месяце будет учтено автоматически.
@Gunjubasik, unixtime существует ТОЛЬКО в формате UTC — перевод локального времени в unixtime, без приведения его к UTC формату лишь внесёт дополнительную путаницу
 
  • Спасибо
Реакции: Nekro и Sergodjan

Nekro

Client
Регистрация
01.08.2020
Сообщения
223
Благодарностей
22
Баллы
18
Если правильно понял вашу задачу:
C#:
//получаем сегодняшнюю дату вида 09.11.2020 00:00:00
DateTime dt = DateTime.Today;
//прибавляемые дни
int days = 30;
//добавляем дни к первоначальной дате
return dt.AddDays(days);
Возвращенная дата будет соответствовать дате календаря, т.е. количество дней в текущем месяце будет учтено автоматически.
@Gunjubasik, unixtime существует ТОЛЬКО в формате UTC — перевод локального времени в unixtime, без приведения его к UTC формату лишь внесёт дополнительную путаницу
Спасибо за ответы. Решил задачу проще. Получаю максимальное количество дней в этом месяце. Получаю сегодняшний день.

Сегодняшний день - 7 + 30 - максимальное количество дней в месяце. Получается как раз число следующего месяца.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)