Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Попасть в промежуток между датами
 
 автор: tima2010   (23.01.2012 в 10:45)   письмо автору
 
 

Привет!
Казалось простой задачей, но застрял...

Есть три даты формата дд.мм
<?php
$date1 
'25.01';
$date2 '31.06';
$date_current date('d.m');
?>


Каким способом можно узнать попадает ли дата сегодня в промежуток между $date1 и $date2 ?

  Ответить  
 
 автор: ladan   (23.01.2012 в 11:10)   письмо автору
 
   для: 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 "не попадает";

?>

  Ответить  
 
 автор: Lotanaen   (23.01.2012 в 11:38)   письмо автору
 
   для: ladan   (23.01.2012 в 11:10)
 

работает, но не корректно например дата 10.02

  Ответить  
 
 автор: cheops   (23.01.2012 в 12:27)   письмо автору
 
   для: tima2010   (23.01.2012 в 10:45)
 

Возможно следует посмотреть в сторону скрипта, переводящего дату в секунды (указывая текущий год, и зануляя время). В этом случае промахнуться мимо интервала невозможно.

  Ответить  
 
 автор: Valick   (23.01.2012 в 12:38)   письмо автору
 
   для: tima2010   (23.01.2012 в 10:45)
 

ну почему вы всегда пишите что нужно сделать, и никогда не пишите зачем это нужно сделать, от этого координально зависит решение задачи.
"и в сотый раз закинул старик невод..."
база данных используется?

  Ответить  
 
 автор: tima2010   (23.01.2012 в 13:31)   письмо автору
 
   для: Valick   (23.01.2012 в 12:38)
 

извиняюсь, не думал что это так важно
База не используется
Переменные задаются ручками
Делаю для определения времен года, Зима Весна Лето Осень
причем даты определяются строго от 1 дня до другого, чисто по месяцам не получится выкрутится

  Ответить  
 
 автор: Lotanaen   (23.01.2012 в 14:45)   письмо автору
 
   для: tima2010   (23.01.2012 в 13:31)
 

если использовать формат даты в обратном порядке чем у Вас, т.е. год - месяц - день часы:минуты:секунды, то все сравнения будут корректно работать без преобразований различных.

  Ответить  
 
 автор: tima2010   (23.01.2012 в 14:53)   письмо автору
 
   для: Lotanaen   (23.01.2012 в 14:45)
 

Даже если сделать так, не помогает, давайте прочитаем для примера простое условие:

if(01 >= 11 and 01 <= 03) {
    echo "Зима";
}


если январь больше или равен ноябрю И январь меньше или равен марту = true
как такое условие может сработать? если там стоит AND

  Ответить  
 
 автор: tima2010   (23.01.2012 в 15:47)   письмо автору
 
   для: tima2010   (23.01.2012 в 14:53)
 

зима как бы начинается с ноября 11 месяц
и заканчивается в марте

if('01.20.2012' >= '11.15.2012' and '01.20.2012' <= '03.15.2013') {
    echo "Зима";

  Ответить  
 
 автор: Lotanaen   (23.01.2012 в 16:18)   письмо автору
 
   для: 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 также сделать...

  Ответить  
 
 автор: tima2010   (23.01.2012 в 16:42)   письмо автору
 
   для: 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 
'...';
}
?>

  Ответить  
 
 автор: Lotanaen   (23.01.2012 в 16:51)   письмо автору
 
   для: tima2010   (23.01.2012 в 16:42)
 

а как это у Вас 61 день весны получился? 92 же календарных?

  Ответить  
 
 автор: tima2010   (23.01.2012 в 16:54)   письмо автору
 
   для: Lotanaen   (23.01.2012 в 16:51)
 

Возможно я ошибся но как мне кажется (чисто по ощущениям )Весна длится с 16.03 - 15.05
Это поправить не долго, главное работает. Всем спасибо!!!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования