Задать вопрос
@dk-web

Как корректно сформировать дату php?

Запутался с датами - адская смесь форматов... php, moment.js datetimepickera и занесения в БД...

формирую на клиенте - jquery и moment.js
formatD_T = 'D MMMM GGGG в HH:mm'; // выводит 3 августа 2015 в 13:00
или 
formatD_T= formatD ="D MMMM GGGG"; // выводит 3 августа 2015
var newDate =  moment(date).format(formatD_T);


далее это все сериализуется и отправляется в обработчик...
раньше делал просто -
$data['event_start']=date("Y-m-d H:i:s", strtotime($data['event_start']));

сейчас, естественно, не понимает такой формат и отправляет к 1970 году...

решил через new DateTime и тоже встрял(((
$datetime = new DateTime($data['event_start']);
	$datetime->createFromFormat('d M Y', $data['event_start']); // формат вроде верный, по документации смотрел
	print_r ($datetime);


Ответ...
3 августа 2015string<br />
<b>Fatal error</b>:  Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (3 августа 2015) at position 0 (3): Unexpected character' in C:\xampp\htdocs\ac_new\admin\mod_calendar\handler_calendar_new1508.php:25
Stack trace:

Подскажите, плиз, как корректно преобразовать string 3 августа 2015 года в понятный для MySQL формат?

UPDATE:
$date = DateTime::createFromFormat('d M Y', '15 February 2009');
echo $date->format('Y-m-d');

работает, но русский язык (августа) не воспринимает... вот в чем засада
  • Вопрос задан
  • 961 просмотр
Подписаться 2 Оценить 1 комментарий
Решения вопроса 1
okwinza
@okwinza
PHP Developer
Если дедлайн вчера:
$months = ['April' => 'Апреля',  'June' => 'Июня', ... ];

$date_string = '15 Апреля 2009';
$date_string = str_ireplace(
    array_values($months), 
    array_keys($months), 
    $date_string
);

$date = DateTime::createFromFormat('d M Y', $date_string);
echo $date->format('Y-m-d');


P.S. php 5.4+
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Используй timestamp
Ответ написан
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Чтобы перестать нервировать самого себя, просто храните и пересылайте дату везде в unix timestamp, а форматируйте её уже при выводе.
Ответ написан
@AlikDex
зачем конвертить туда суда? Используйте какой-нибудь datetimepicker с удобным интерфейсом. Типа такого:
https://eonasdan.github.io/bootstrap-datetimepicker/
пользователю какая разница что там будет в поле ввода написано.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы