2013-07-24 3 views
2

Недавно я получил PHP-кодирование для простого календаря. Но это формат даты в мм/дд/гг. Есть ли в любом случае, что я могу автоматически преобразовать его в yy-mm-dd? Я слышал, что использование strtotime может автоматически изменить его при входе в базу данных, но я не знаю, как и где добавить код. Я пытаюсь добавить как .. strftime("%Y-%m-%d", strtotime($Date)) на главной странице, но я не знаю, где добавить это, но все места недействительны. Любая помощь? Помощь очень ценится.Как сделать автоматическое преобразование для формата даты php?

Это примерно, как это выглядит на моей главной странице:

if(isset($_POST["insert_click"])) 
{ 
    $Date=$_POST["Date"]; 
    strftime("%Y-%m-%d", strtotime($Date)); //I tried putting it here but it does not work 
    $Time=$_POST["Time"]; 
    $query=$connect->prepare("insert into Booking(Date, Time) values (?,?)"); 
    $query->bind_param('ss', $Date, $Time); 
    $query->execute(); 
} 

Это примерно, как она выглядит в моей странице формы:

<tr> 
<td>Date:</td> 
<td> 

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title>jQuery UI Datepicker - Format date</title> 
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" /> 
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
    <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 
    <link rel="stylesheet" href="/resources/demos/style.css" /> 
    <script> 
    $(function() 
    { 
     $("#datepicker").datepicker({minDate:0}); 
     $("#format").change(function() 
     { 
      $("#datepicker").datepicker(); 
     }); 
    }); 
    </script> 

</head> 
<body> 

<input type="text" id="datepicker" size="30" name="Date"/> 

</body> 
</html> 
</td> 
</tr> 

ответ

0

Ваша строка strftime("%Y-%m-%d", strtotime($Date)); верна. Вы только забыли присвоить возвращаемое значение этой функции переменной. Вы хотите что-то вроде этого:

$newDate = strftime("%Y-%m-%d", strtotime($Date)); 

Если вы не нуждаетесь в первоначальную дату больше, вы можете сделать:

$Date = strftime("%Y-%m-%d", strtotime($Date)); 

Примечание: В эти дни, вы можете быть очень ленивым, когда это относится к форматам времени PHP для использования в базе данных или теге <time datetime="bla"></time> HTML. Оба «нормальные» и локализованные форматы времени дают вам ярлык для создания часто используемых комбинаций значений времени, примеры:

  1. c для date()
  2. %F для strftime()
+0

Цитата @ jh314 здесь: «Также, поскольку вы хотите yy-mm-dd, используйте'% y' вместо '% Y'. –

+1

Привет! Большое спасибо! X миллионов раз! Спасибо-спасибо! Мне удалось это сделать! Благодаря! Благодаря! – stupidgal

0

Проблема заключается в том, что вам нужно, чтобы сохранить результаты преобразования даты в переменную. Это утверждение:

strftime("%Y-%m-%d", strtotime($Date)); 

будет выполнять преобразование даты и возвращает преобразованную дату, но оставит $Date в покое.

Чтобы это исправить, нужно Caputure результатов, сохраняя результаты в переменной:

$Date = strftime("%y-%m-%d", strtotime($Date)); 

Кроме того, так как вы хотите YY-MM-DD, используйте %y вместо %Y.

+0

Спасибо за вашу помощь! :) Действительно ценю это! – stupidgal

0

Опцион будет используйте встроенную функцию даты:

$Date=DATE('y-m-d, strtotime($_POST["Date"])); 
+0

Привет! Он способен преобразовать формат даты с мм/дд/гг. В yy/mm/dd, но возвращаемые данные - 1970/01/01. Я выбрал дату с даты, которая была 26 июля 2013 года, но она вернула мне 1970/01/01. Что мне делать? – stupidgal

+0

@stupidgal - вы можете преобразовать отправленную дату с помощью strtotime(). См. Обновленный ответ. – bestprogrammerintheworld

+0

Спасибо за ваши усилия :) – stupidgal