4 день для произвольного прошлого месяца с конца

1 234
[Удален]
#31
miltorg:
А смысл вот в таком календаре занятости:

Я его сейчас делаю. Он работает. и код от туда.

кстати. все отлично понимали моё исходное задание...

У вас образование какое?

S
На сайте с 13.10.2014
Offline
171
#32

я так понимаю, что товарищ вбил себе в голову, что считать надо 4 дня от последнего дня предыдущего месяца.

Открою страшную тайну. За предыдущим месяцем идет следующий, то-есть если вы отсчитаете 5 дней от 31.12.2016 и 6 дней от 01.01.17, это будет одно и то-же число!!!

Это страшная тайна, но поверьте, вы рано или поздно привыкните к таким поразительным открытиям!

То-же самое касается и любого другого месяца в году.

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

[Удален]
#33
silicoid:
я так понимаю, что товарищ вбил себе в голову, что считать надо 4 дня от последнего дня предыдущего месяца.

Открою страшную тайну. За предыдущим месяцем идет следующий, то-есть если вы отсчитаете 5 дней от 31.12.2016 и 6 дней от 01.01.17, это будет одно и то-же число!!!

Это страшная тайна, но поверьте, вы рано или поздно привыкните к таким поразительным открытиям!
То-же самое касается и любого другого месяца в году.

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

Моя формула вот:

mktime(0, 0, 0, idate('m'), -3, idate('y')

Где тут последний день предыдущего месяца? Где?

Пока не ответите про образование - разговаривать не буду.

S
На сайте с 13.10.2014
Offline
171
#34

A

mktime(0, 0, 0, idate('m'), -3, idate('y')

idate('m') = 1

idate('y') = 17

0 = 31.12.16

-1 = 30.12.16

-2 = 29.12.16

-3 = 28.12.16

B

date('Y-m').' -4 days');

date('Y-m') === date('Y-m', time()) === "2017-01" === "2017-01-01" -> 2017-01-01 - 4 дня

31.12 -> 30.12 -> 29.12 -> 28.12;

найдите одно отличие?

"У вас образование какое?"

Московский Институт Радиотехники Электроники Автоматики, Прикладное программирование. вот только непонятно нахера это надо, если я институт закончил 12 лет назад

[Удален]
#35

Итак. рабочие варианты:

1. mktime(0,0,0,idate('m'),-3,idate('y'); // Можно задать время

2. strtotime('first day of')-345600; // Победа по длине

3. strtotime('-4 days',strtotime('last day of previous month')); //Победа по наглядности

4. strtotime(date("Y-m").' -5 days'); // Это тоже достаточно наглядно

5. strtotime(date("Y-m"))-345600;



---------- Добавлено 30.01.2017 в 18:25 ----------

miltorg:
Итак. рабочие варианты:
1. mktime(0,0,0,idate('m'),-3,idate('y');
2. strtotime('first day of')-345600; // Победа по длине
3. strtotime('-4 days',strtotime('last day of previous month')); //Победа по наглядности
4. strtotime(date("Y-m").' -5 days');

Симбиоз 2 и 4:

strtotime(date("Y-m"))-345600;

S
На сайте с 13.10.2014
Offline
171
#36

в 4 и 5 тоже можно задать время

4. strtotime(date("Y-m 14:00").' -5 days'); // Это тоже достаточно наглядно

5. strtotime(date("Y-m 14:00"))-5*86400;

S
На сайте с 13.10.2014
Offline
171
#37

о! фичу обнаружил

strtotime('first day of')-345600;

даст дату не с 00:00 а current time (текущее время) то-есть если человек смотрит 23:50 то это уже фактически следующий день

1 234

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий