| |
|
|
| | в текстовом файле(далее файл) хранится дата в формате 8.3.2004 (т.е. это типа значит - 8 марта 2004), php-файл (далее обработчик) считывает этот файл. Обработчик запускатся будет ежедневно.
как в обработчике определить, что до даты из файла осталось две недели (год не учитывается)? | |
| |
|
|
| |
|
|
| |
для: P@Sol
(21.06.2006 в 11:34)
| | | вот что написал (вичитаем дни):
<?
$nod = array (31,28,31,30,31,30,31,31,30,31,30,31);
$ac_month = date("n"); //месяц 1..12
$ac_day = date("j"); //день 1..31
//правка на високосный год
if (date("L")==1) {$nod[1]=29;}
$temp_day = $ac_day - 14;
if ($temp_day < 1)
{
$temp_month = $ac_month - 1;
$ac_day_next = $nod[$temp_month]+$temp_day+1;
}
else
{
$temp_month = $ac_month;
$ac_day_next = $temp_day;
}
echo $ac_day_next.".".$temp_month;
?>
|
прибавляем
<?
$nod = array (31,28,31,30,31,30,31,31,30,31,30,31);
$ac_month = date("n"); // 1..12
$ac_day = date("j"); //1..31
if (date("L")==1) {$nod[1]=29;}
$temp_day = $ac_day + 14;
if ($temp_day > $nod[$ac_month])
{
$temp_month = $ac_month + 1;
$ac_day_next = 1 + $temp_day - $nod[$ac_month];
}
else
{
$temp_month = $ac_month;
$ac_day_next = $temp_day;
}
echo $ac_day_next.".".$temp_month;
|
| |
| |
|
|
| |
|
|
| |
для: P@Sol
(21.06.2006 в 11:34)
| | | А нельзя изменить формат хранения даты с DD.MM.YYYY на UNIXSTAMP - число секунд, начиная с полуночи первого января 1970 года? Было бы гораздо удобнее оперировать такой датой? | |
| |
|
|
| |
|
|
| |
для: cheops
(21.06.2006 в 12:33)
| | | в большенстве случаев у меня в том файле стоит d.m - это означает что событие ежегодное, а если есть год, то событие "одноразовое". если такое можно реализовать на unixstamp, то я могу перейти на него | |
| |
|
|
| |
|
|
| |
для: P@Sol
(21.06.2006 в 13:06)
| | | cheops? | |
| |
|
|
| |
|
|
| |
для: P@Sol
(21.06.2006 в 11:34)
| | |
<?
//...
//... чтение из файла даты в $fdate
//...
list ($day, $month, $year) = explode ('.', $fdate);
//file time
$ftime = mktime(0, 0, 0, $month, $day, $year);
//curent time
$ctime = time();
//today start - vremja na4ala segodbjashnego dnja
$tdstart = date('d-m-Y', $ctime);
list ($day, $month, $year) = explode ('-', $tdstart);
//today start - vremja na4ala segodbjashnego dnja
$tdstart = mktime(0, 0, 0, $month, $day, $year);
$two_weeks = 2*7*24*3600;
if ($ftime - $tdstart == $two_weeks) {
echo "осталось 2 недели";
}
|
Только может быть будет не совсем совпадать, тогда надо ставить проверку +- несколько секунд | |
| |
|
|
| |
|
|
| |
для: ec_stasis
(21.06.2006 в 12:41)
| | | Можно даже проще сделать: прибавлять 2 недели к сегодняшнему timestamp'у и проверять, входит ли это дело в дипазон от начала дня в файле и до конца этого дня... | |
| |
|
|