|
|
|
| Привет!
Казалось простой задачей, но застрял...
Есть три даты формата дд.мм
<?php
$date1 = '25.01';
$date2 = '31.06';
$date_current = date('d.m');
?>
|
Каким способом можно узнать попадает ли дата сегодня в промежуток между $date1 и $date2 ? | |
|
|
|
|
|
|
|
для: tima2010
(23.01.2012 в 10:45)
| | наверно мой способ самый примитивный, но работает :)
<?
$data1 = '25.01';
$data2 = '31.06';
$data_current = date('d.m');
$data_current = explode(".",$data_current);
if($data_current[0] >= 25 and $data_current[1] >= 01 and $data_current[0] <= 31 and $data_current[1] <= 06) echo "попадает"; else echo "не попадает";
?>
|
| |
|
|
|
|
|
|
|
для: ladan
(23.01.2012 в 11:10)
| | работает, но не корректно например дата 10.02 | |
|
|
|
|
|
|
|
для: tima2010
(23.01.2012 в 10:45)
| | Возможно следует посмотреть в сторону скрипта, переводящего дату в секунды (указывая текущий год, и зануляя время). В этом случае промахнуться мимо интервала невозможно. | |
|
|
|
|
|
|
|
для: tima2010
(23.01.2012 в 10:45)
| | ну почему вы всегда пишите что нужно сделать, и никогда не пишите зачем это нужно сделать, от этого координально зависит решение задачи.
"и в сотый раз закинул старик невод..."
база данных используется? | |
|
|
|
|
|
|
|
для: Valick
(23.01.2012 в 12:38)
| | извиняюсь, не думал что это так важно
База не используется
Переменные задаются ручками
Делаю для определения времен года, Зима Весна Лето Осень
причем даты определяются строго от 1 дня до другого, чисто по месяцам не получится выкрутится | |
|
|
|
|
|
|
|
для: tima2010
(23.01.2012 в 13:31)
| | если использовать формат даты в обратном порядке чем у Вас, т.е. год - месяц - день часы:минуты:секунды, то все сравнения будут корректно работать без преобразований различных. | |
|
|
|
|
|
|
|
для: Lotanaen
(23.01.2012 в 14:45)
| | Даже если сделать так, не помогает, давайте прочитаем для примера простое условие:
if(01 >= 11 and 01 <= 03) {
echo "Зима";
}
|
если январь больше или равен ноябрю И январь меньше или равен марту = true
как такое условие может сработать? если там стоит AND | |
|
|
|
|
|
|
|
для: tima2010
(23.01.2012 в 14:53)
| | зима как бы начинается с ноября 11 месяц
и заканчивается в марте
if('01.20.2012' >= '11.15.2012' and '01.20.2012' <= '03.15.2013') {
echo "Зима";
}
|
| |
|
|
|
|
|
|
|
для: tima2010
(23.01.2012 в 15:47)
| | так Вам тогда только месяца одни и нужны
$month = 3;
if ($month>11 && $month<3) echo "Zima";
if ($month>2 && $monht<6) echo "Vesna";
if ($month>5 && $month<9) echo "Leto";
if ($month>8 && $month<12) echo "Osen";
|
Можно и через switch case также сделать... | |
|
|
|
|
|
|
|
для: Lotanaen
(23.01.2012 в 16:18)
| | Вообщем сделал так, по мне это лучший выход:
<?php
$begin = '01-01-'.date('Y');
$winter = '120'; // количество дней зимы
$spring = '181'; // 61 количество дней весны
$summer = '289'; // 108 количество дней лета
$autumn = '365'; // 76 количество дней осени
$result_date = floor((strtotime("now")-strtotime($begin))/86400)+1;
if($winter >= $result_date) {
echo 'Зима';
} elseif($spring >= $result_date) {
echo 'Весна';
} elseif($summer >= $result_date) {
echo 'Лето';
} elseif($autumn >= $result_date) {
echo 'Осень';
} else {
echo '...';
}
?>
|
| |
|
|
|
|
|
|
|
для: tima2010
(23.01.2012 в 16:42)
| | а как это у Вас 61 день весны получился? 92 же календарных? | |
|
|
|
|
|
|
|
для: Lotanaen
(23.01.2012 в 16:51)
| | Возможно я ошибся но как мне кажется (чисто по ощущениям )Весна длится с 16.03 - 15.05
Это поправить не долго, главное работает. Всем спасибо!!! | |
|
|
|