Приветствую Вас ГостьВторник, 11.02.2025, 03:54

Light Midnight Inc.


Каталог статей

Главная » Статьи » Программирование » PHP/JavaScripts

Манипулирование датой на PHP (2)


Создание функции DateAdd для PHP

Как я уже говорил в начале - причиной написания этой статьи было то, что я не мог найти в PHP функцию аналогичную DateDiff в ASP. Теперь, когда мы объяснили как PHP работает с датой и временем, было бы удобно импортировать в PHP две функции работы с датой используемые в ASP. Первая - это функция DateAdd.

Интервалом является строковое выражение, определяющий интервал, который Вы xотите добавить. Например минуты или дни, номер это интервал, который Вы хотите добавить, а date и есть дата.

Интервалом может быть один из нижеизложенных:

yyyy
год
q
четверть
q
четверть
m
месяц
y
день года
d
день
w
день недели
ww
неделя года
h
час
n
минута
s
секунда

Здесь w, y и d делают одно и то же, а именно добавляют 1 день к текущему дню, q добавляет 3 месяца, ww добавляет 7 дней.


function DateAdd($interval$number$date) {

    
$date_time_array getdate($date);
    
$hours $date_time_array['hours'];
    
$minutes $date_time_array['minutes'];
    
$seconds $date_time_array['seconds'];
    
$month $date_time_array['mon'];
    
$day $date_time_array['mday'];
    
$year $date_time_array['year'];

    switch (
$interval) {
    
        case 
'yyyy':
            
$year+=$number;
            break;
        case 
'q':
            
$year+=($number*3);
            break;
        case 
'm':
            
$month+=$number;
            break;
        case 
'y':
        case 
'd':
        case 
'w':
            
$day+=$number;
            break;
        case 
'ww':
            
$day+=($number*7);
            break;
        case 
'h':
            
$hours+=$number;
            break
        case 
'n':
            
$minutes+=$number;
            break;
        case 
's':
            
$seconds+=$number
            break;            
    }
       
$timestampmktime($hours,$minutes,$seconds,$month,$day,$year);
    return 
$timestamp;
}

?>

Мы можем соxранить этот код под именем dateadd.inc затем запустить следующий код:


include('dateadd.inc'); 
$temptime time();
echo 
strftime('%Hh%M %A %d %b',$temptime);
$temptime DateAdd('n',50,$temptime);
echo 
'

';
echo 
strftime('%Hh%M %A %d %b',$temptime);

?>

Возвращаемым значением которого будет:

15h41 Saturday 03 Jun 
16h31 Saturday 03 Jun

Создание функции DateDiff для PHP

Согласно документации функция DateDiff "Возвращает количество интервалов между двумя датами".

Синтаксис функции таков:

DateDiff(interval,date1,date2)

Интервалы, которыми эта функция пользуется те же, что мы увидели в работе с функцией DateDiff. Ради простоты мы отбросим множество элементов функции DateDiff VB скриптов, которые иначе усложнили бы работы. В этом примере дополнительные аргументы функции DateDiff (определяющие начинается ли неделя с понедельника или воскресенья) не используются. Интервалы, которые мы собираемся разрешить следующие - "w", "d&q", "h", "n" и "s".

Давайте посмотрим, что мы сможем сделать:


Function DateDiff ($interval,$date1,$date2) {
    
// получает количество секунд между двумя датами 
    
$timedifference $date2 $date1;

    switch (
$interval) {
        case 
'w':
            
$retval bcdiv($timedifference,604800);
            break;
        case 
'd':
            
$retval bcdiv($timedifference,86400);
            break;
        case 
'h':
            
$retval =bcdiv($timedifference,3600);
            break
        case 
'n':
            
$retval bcdiv($timedifference,60);
            break;
        case 
's':
            
$retval $timedifference;
            break;
            
    }
    return 
$retval;

}
?>

После сохранения этого кода под именем datediff.inc, можем запустить следующий код:


include('datediff.inc';
include(
'dateadd.inc');
$currenttime time();
echo 
'Current time: '.strftime('%Hh%M %A %d %b',$currenttime).'<br>';
$newtime DateAdd('n',50,$currenttime);
echo 
'Time plus 50 minutes: 'strftime('%Hh%M %A %d %b',$newtime).'<br>';
$temptime DateDiff('n',$currenttime,$newtime);
echo 
'Interval between two times: '.$temptime;

?>

который, в случае корректного конфигурирования, должен отобразить следующее:

Current time16h23 Saturday 03 Jun
Time plus 50 minutes
17h13 Saturday 03 Jun
Interval between two times
50

Если у вас установлена UNIX система, то компилирование Вам нужно будет сделать с поддержкой для bcmath функции. Файл README.BCMATH в Вашем дистрибутиве даст все необходимые детали. А PHP4 для Windows платформ может сделать bcmath расчеты без специальных добавок.

Категория: PHP/JavaScripts | Добавил: Cromartie (31.01.2013)
Просмотров: 546 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Наш опрос
Оцените мой сайт
Всего ответов: 543
Статистика

Онлайн всего: 5
Гостей: 5
Пользователей: 0
Реклама
Cheсking
Часы
Мини-чат
200
Друзья Сайта
  • Light Midnight - Ваша Еда
  • Light Midnight - Anim as life style
  • Поиск