2015-02-04 15 views
0

Я загружаю данные excel в mysql. там есть save, как 16.5.59 (dd.mm.yy) formate. Я пытаюсь изменить это, используя этот кодПреобразование формата даты в php

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

всегда показывает текущее время, например 04-02-15. Pls изменит это на dd-mm-yyyy formate.

Спасибо заранее.

+2

Вы можете разместить ваш код до сих пор пожалуйста? –

+0

$ date = '16 .5.59 '; echo date ('Y-m-d', strtotime ($ date)); – mollie

+0

u хотите его в формате 59.5.16? –

ответ

1

$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";

2

Временная метка была ограничена с 01-01-1970 по 19-01-2038 на некоторых системах (например, Windows).

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

+0

Мой ответ работает, но кажется, что дата была еще до 01-01-1970. Я пробовал использовать онлайн-код PHP для проверки кода, и если '$ date' был' 1.1.1980', он работает, а '1.1.1970' - нет. – Jamie

+0

ok thaks для imporve мои знания. но мне нужно сделать формат даты. моя задача - преобразовать автономные данные в онлайн-список с 1939 года.:/ – mollie

1

Попробуйте сделать дату самостоятельно, используя 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

Вы ARE необходимо указать, что год 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

можно найти год 1900 - 1999 и 2000 до 2015 года или поставить на него условие. – mollie

+0

да! просто проверьте длину строки ('$ date_arr [0]'). Если это 'длина == 4', вам может не понадобиться его менять. – Jamie

1

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

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

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

echo $dateObj['year']; 

IDE Running Example

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

0

Вы может сделать это, если это для более простой задачи. Он будет потреблять время.

$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

Я только что написал всю комбинацию –

Смежные вопросы