Я пробовал несколько способов конвертировать дату, выбранную с помощью datetimepicker, чтобы сохранить ее в моей базе данных MySQL, но ни один из них не работает.
я хочу сохранить этот формат:
10 Octobre 2015 - 12:28 pm
но я сохранил это:
01 Jan 1970
какие-либо предложения? Много ткс
Мой код для выбора даты:
<div class="input-group date form_datetime col-md-6" data-date-format="dd MM yyyy - HH:ii p" data-link-field="dtp_input1">
<input class="form-control" name="date_from" size="16" type="text" value="" readonly>
</div>
и для его сохранения:
$date_from=$_POST['date_from'];
$query = $db->prepare('INSERT INTO events (date_from, title)
VALUES (:date_from, :titre)');
Немного опоздал на вечеринку, но вы можете использовать следующее, чтобы получить ввод при отправке. Это было разработано для преобразования нескольких входов, но может быть отредактировано для запуска только на одном, если вы того пожелаете.
Следующее позволяет вам отображать ваш выбор времени в 12-часовом формате, а также применять datetimepicker js к любым динамически создаваемым элементам.
$(document).on("mouseover mouseout", ".datetimepicker", function(){
$(this).datetimepicker({
format:'YYYY-MM-DD hh:mm:00 a'
})
});
Кстати, datetimepicker требует moment.js, поэтому перед отправкой запустите его, чтобы сохранить в mysql.
$('form').submit( function () {
$('.datetime').each( function() {
$(this).val(moment(new Date($(this).val())).format("YYYY-MM-DD HH:mm:ss"))
});
})
Чтобы отобразить время, как вы упомянули, вам может потребоваться применить стили к дате, когда вы их отображаете.
Настройте поле MySQL как DATETIME
столбец, затем сделайте это со своим datetimepicker:
$('#input').datetimepicker(
'dateFormat': "yy-mm-dd",
'timeFormat': "HH:mm:ss");
Есть некоторые вещи, которые нужно знать о DatePicker Bootstrap.
Во-первых, он не предназначен для обработки события отправки формы, поэтому, когда вы устанавливаете data-date-format = «dd MM yyyy — HH: ii p», вы получаете именно эту строку POST. Это означает, что необходим препроцесс.
Вы можете сделать это на стороне клиента или на стороне клиента. Всегда лучше работать на стороне клиента, так что экономьте ресурсы нашего сервера. Вы также можете создать функцию внутри вашего PHP для преобразования в формат MySQL вашей строки POST.
Помните, что если вы обрабатываете на стороне клиента, вам нужно отправить POST в формате MySql (ГГГГ-мм-дд для ДАТЫ) или (ГГГГ-мм-дд Ч: i: s для DATETIME или TIMESTAMP)
Напр .:
// Форматируем ваш datetimepicker в формате Mysql
$("input[name='date_from']").datepicker().on('changeDate', function(e){
var dateFrom = new Date(e.date.getFullYear(), e.date.getMonth(), e.date.getDate(), e.date.getHours(),e.date.getMinutes(),0);
});
Теперь вы можете поместить это значение в скрытое поле:
HTML:
<input id="sqldate_from" type="hidden" name="sqldate_from" />
СЦЕНАРИЙ:
$("input[name='date_from']").datepicker().on('changeDate', function(e){
var dateFrom = new Date(e.date.getFullYear(), e.date.getMonth(), e.date.getDate(), e.date.getHours(),e.date.getMinutes(),0);
});
$("#sqldate_from").val(dateFrom);
PHP:
$date_from = $_POST['sqldate_from'];
Вы также можете получить исходную строку без обработки и обработки в PHP … что-то вроде этого (только для формата ГГГГ-мм-дд):
public function formatDatepickerToMySql($date) {
if ($date != FALSE) {
$dateArr = explode("-", $date);
$newDate = $dateArr[2] . '-' . $dateArr[1] . '-' . $dateArr[0];
return $newDate;
}
return FALSE;
}
Надеюсь быть полезным
KR
apassos