PHP конвертирует формат даты - PullRequest
0 голосов
/ 22 апреля 2009

Дублирование

Дорогие все,

У меня есть страница PHP, где я буду отображать некоторые данные из базы данных MySQL. У меня есть 2 даты для отображения на этой странице. В моей таблице БД Дата 1 находится в формате d / m / Y (например: 11/11/2002), а Дата 2 - в формате dmY (например: 11-11- 2002) Мне нужно отобразить оба в одном и том же формате. Формат, который я сохранил в переменной $ dateFormat = 'm / d / Y'

Может ли кто-нибудь вести меня

Заранее спасибо

Ответы [ 5 ]

6 голосов
/ 22 апреля 2009

Используйте strtotime для преобразования строк в метку времени Unix, затем используйте функцию date для создания правильного выходного формата.

Поскольку вы используете британский формат даты "d / m / Y", а strtotime ожидает американский формат, вам нужно немного его преобразовать:

$date1 = "28/04/2009";
$date2 = "28-04-2009";

function ukStrToTime($str) {
    return strtotime(preg_replace("/^([0-9]{1,2})[\/\. -]+([0-9]{1,2})[\/\. -]+([0-9]{1,4})/", "\\2/\\1/\\3", $str));
}

$date1 = date($dateFormat, ukStrToTime($date1));
$date2 = date($dateFormat, ukStrToTime($date2));
2 голосов
/ 22 апреля 2009

У вас должно быть все готово с этим:

echo date($dateFormat, strtotime($date1));
echo date($dateFormat, strtotime($date2));
1 голос
/ 22 апреля 2009

Возможно, вы захотите взглянуть на функцию strptime . Это может преобразовать любую дату из строки обратно в числовые значения. В отличие от strtotime , он может быть адаптирован к различным форматам, в том числе из разных локалей, и его выходные данные не являются меткой времени UNIX, поэтому он может анализировать даты до 1970 и после 2037 года. хотя больше работы, потому что он возвращает ассоциативный массив.

К сожалению, он также недоступен в системах Windows, поэтому он не переносим.

0 голосов
/ 01 марта 2011

я новичок. так придумал метод, который просто делает это. что нужно mysql .. shish я использовал param 2 ... надеюсь, это поможет. С уважением

public function dateConvert($date,$param){  
     if($param==1){  
         list($day,$month,$year)=split('[/.-]',$date);  
         $date="$year-$month-$day"; //changed this line  
         return $date;  
     }  
     if ($param == 2){ //output conversion  
            list($day,$month,$year) = split('[/.]', $date);  
            $date = "$year-$day-$month";  
            return $date;  
   }  
 }  
0 голосов
/ 22 апреля 2009

Если по какой-то причине strtotime у вас не сработает, всегда можно просто заменить ошибочную пунктуацию на str_replace.

function dateFormat($date) {
$newDate = str_replace(/, -, $date);
echo $newDate;
}

echo dateFormat($date1);
echo dateFormat($date2);

Я знаю, что это заставит большинство людей съежиться, но это может помочь вам в форматировании строк без даты в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...