Я загружаю данные excel в mysql. там дата сохранить как формат 16.5.59 (дд.мм.гг). Я пытаюсь изменить это с помощью этого кода

$date = '16.5.59'; 
echo date('d-m-y',strtotime($date));

Он всегда показывает текущее время, например, 04-02-15. Пожалуйста, измените это на формат дд-мм-гггг.

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

php
0
mollie 4 Фев 2015 в 15:52

5 ответов

Лучший ответ
$date = '16.5.59';
$date_array = explode(".",$date);
$var_day = $date_array[0];
$var_month = $date_array[1];

> Blockquote

$var_year = $date_array[2];
echo $new_date_format = "$var_day-$var_month-$var_year";
1
user4033772user4033772 4 Фев 2015 в 13:38

Вы можете сделать это для более простых задач. Это займет время.

$date = '16.5.59'; 
$dtSplit=explode(".",$date);
echo "<br>".$dtSplit[0].".".$dtSplit[1].".".$dtSplit[2];
echo "<br>".$dtSplit[0].".".$dtSplit[2].".".$dtSplit[1];
echo "<br>".$dtSplit[1].".".$dtSplit[0].".".$dtSplit[2];
echo "<br>".$dtSplit[1].".".$dtSplit[2].".".$dtSplit[0];
echo "<br>".$dtSplit[2].".".$dtSplit[0].".".$dtSplit[1];
echo "<br>".$dtSplit[2].".".$dtSplit[1].".".$dtSplit[0];
0
Abhilash Cherukat 4 Фев 2015 в 13:16

Это ни в коем случае не лучшее решение, но возможно использование php date_parse_from_format. Вы можете указать формат и использовать следующие

$date = "16.5.59";
$dateObj = date_parse_from_format("j.n.yy", $date)

С $dateObj вы можете работать с тем, что вам нужно, например:

 echo $dateObj['year'];

Пример запуска IDE

Стоит отметить, что вам требуется PHP >=v5.3

1
Pogrindis 4 Фев 2015 в 13:32

Попробуйте назначить дату самостоятельно, используя explode и strtotime:

date_default_timezone_set('America/Los_Angeles');

$date = '16.5.59';

$date_time = strtotime(implode('-', array_reverse(explode('.', $date))))
$date_str = date('d-m-Y', $date_time);

echo $date_str;

Вывод: 16-5-2059

Вы ОБЯЗАТЕЛЬНО должны указать, что год равен 1959 вместо 2059 (или вы уверены, что это действительно 2059 год?)

Вы можете сделать изменение с 2059 на 1959 следующим образом:

date_default_timezone_set('America/Los_Angeles');

$date = '16.5.59';

$date_arr = array_reverse(explode('.', $date))

# This line does the job. Make sure all years are between 1900 - 1999.
$date_arr[0] = '19' . $date_arr[0];

$date_time = strtotime(implode('-', $date_arr))
$date_str = date('d-m-Y', $date_time);

echo $date_str;

Надеюсь, этот ответ вам поможет.

1
Jamie 4 Фев 2015 в 13:06

Временная метка была ограничена с 01.01.1970 до 19.01.2038 в некоторых системах (например, Windows).

Если он не покрывает указанный диапазон, тогда он будет принимать текущую дату.

2
Ghanshyam Dekavadiya 4 Фев 2015 в 13:06