mirsite

      главная страница     письмо     Добавить в избранное

    PHP // MySQL // .htaccess


   Об авторе >>>



Главная страница

PHP

     Статьи

     Функции

       Строки

       Массивы

       Файлы и файловая система

       Работа с сетью

       Дата и время

       Специальные

       Регулярные выражения (POSIX)

     Книги

MySQL

Apache и .htaccess

Полезные сервисы

Новости

Ссылки

Карта сайта



Дата и время



strtotime

PHP 3 >= 3.0.12, PHP 4, PHP 5

Функция strtotime преобразует текстовое представление даты на английском языке в метку времени Unix (в секундах с 1 января 1970 года)

Описание: int strtotime ( string time [, int now] )

Первым параметром функции должна быть строка с датой на английском языке, которая будет преобразована в метку времени относительно метки времени, переданной в now, или текущего времени, если аргумент now опущен. В случае ошибки возвращается -1. Для использования этой функции нужны элементарные знания английского языка, хотя бы в области календарных терминов.

<?php
echo strtotime("10 September 2000"), "\n";
echo 
strtotime("+1 day"), "\n";
echo 
strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo 
strtotime("next Thursday"), "\n";
echo 
strtotime("last Monday"), "\n";
?>


Однако, чаще всего в нашей стране функция strtotime() используется для перевода в юниксово время даты, записанной в строку не английскими словами, что у нас встречается редко, а цифрами.

Например:

<?php
echo strtotime("2006-07-31 22:45:59");
// 1154371559
?>


При этом надо помнить, что функция strtotime() использует GNU формат даты. Руководство GNU Date Input Formats можно найти здесь. В этом формате допускается несколько вариантов, но следовать им надо очень строго, иначе возникнет трудноуловимая ошибка. Так в примере, приведенном ниже, первый вариант верен, обратный перевод даты из юниксового времени в строку возвращает тоже самое, а во втором варианте, где день и месяц размещены не так, как требует GNU формат, и в итоге мы получаем на выходе совсем иную дату.

<?php
$t
=strtotime("2006-07-31 22:45:59");
echo 
date ("Y-m-d H:i:s"$t);
// 2006-07-31 22:45:59

$t=strtotime("2006-31-07 22:45:59");
echo 
date ("Y-m-d H:i:s"$t);
// 2008-07-07 22:45:59
?>


Ловить такие ошибки сложно - как таковой ошибки вроде как и нет - просто функция не так поняла предложенную ей для преобразования строку.


Все функции раздела >>>




  

Александр Мироненко, MirSite.ru © 2005-2014       
Сайт обновлен 24 июня 2019 года