Управление различиями в форматах даты между PHP и MySQL

При публикации создается каталог назначения в следующем формате:

bin\$(Configuration)\netcoreapp\publish

Таким образом, ваш каталог будет создан в:

COPY ${source:-MyWebApp/bin/Release/netcoreapp/publish/out} .

[ 118] Примечание: замените вашей .net версией

Подробнее об этом вы можете прочитать здесь

6
задан nickf 6 January 2009 в 02:43
поделиться

6 ответов

С тех пор (вокруг) PHP 5.2, PHP имел созданный в классе/объекте для контакта с Датами и временем, названными DateTime. В пустоте всегда лучше использовать встроенное, чем пререкаться с грязными деталями самостоятельно.

Конструктор DateTime (или функция date_create) принимает дату в любом формате, понятом под strToTime. Все, что необходимо знать о strToTime, это - волшебный вуду, который правильно распознает дату почти в любом формате строки. Когда я сначала встретился с strToTime, у меня была та же внутренняя реакция, которую Вы имеете теперь ("это, говорят ерунду/кажутся ненадежные"). Это не. Это Просто Работает способом, что Ваше собственное хрупкое понимание дат никогда не будет (и если Вы думаете, что понимаете даты, Вы не делаете. Доверяйте Мне.)

Так, вытяните информацию от MySQL как Дата/Строка времени и сразу создайте Объект даты PHP. Используйте date_format метод (с некоторыми удобными константами) при необходимости в дате снова как в строке.

7
ответ дан 8 December 2019 в 16:12
поделиться

Можно заменить php_date с strtotime.

$php = strtotime($mysql);

Эквивалентный MySQL был бы UNIX_TIMESTAMP.

Хотя, если Вы хотите обработать форматирование в SQL, MySQL попытки DATE_FORMAT.

3
ответ дан 8 December 2019 в 16:12
поделиться

Сохраните все в базе данных в поле даты и времени в UTC. Для управления PHP пользуйтесь библиотекой PEAR Date. Я не крупный ГРУШЕВЫЙ пользователь, но эта библиотека является фантастической и обработает все раздражающие проблемы преобразования даты, о которых Вы не должны проводить свое время, волнуясь.

2
ответ дан 8 December 2019 в 16:12
поделиться

Вы могли сделать маленький объект даты, который просто преобразовывает дату, поскольку Вам нужна она

$Date_p = new MagicDate($php_date);
$Date_m = new MagicDate($mysql_date);

$Date_p и $Date_m просто показывают, что можно отобрать объект так или иначе, Вы должны. Когда Вы хотите mysql дату, у Вас был бы код как. Реалистично это было бы что-то довольно универсальное как $Date.

$query = "UPDATE SET Date='".$Date_p->toMysql()."' "...

и наоборот когда Вам нужно противоположное. Можно использовать функции, которые Вы уже создали. Просто добавьте "сниффера" в методе конструкции как:

public function __construct($date)
{
    $phpdate = strtotime($date);
    if($phpdate) 
    {
        $this->phpdate = $phpdate;
        $this->mysqldate = $this->mysql_date($phpdate);
    }
    else
    {
        $this->phpdate = $this->php_date($phpdate);
        $this->mysqldate = $phpdate;
    }
}

Добавьте некоторую обработку ошибок для ловли вещей, которые разлагаются. Добавьте метод считывания для этих двух дат. И это - набор это, и забудьте это ситуация. Просто вытащите правильную дату при необходимости в ней.

Могла быть некоторая оптимизация, но это должно просто показать Вам, как это могло работать.

0
ответ дан 8 December 2019 в 16:12
поделиться

Я рекомендовал бы сохранить все в mysql формате, пока Вы не должны отображать его пользователю, затем используйте strtotime (), чтобы заставить метку времени Unix и дату () форматировать его.

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

$ymdDateAdded = date('Y-m-d');
$timeDateAdded = strtotime($ymdDateAdded);
$userDateadded = date('j F Y', $timeDateAdded);
2
ответ дан 8 December 2019 в 16:12
поделиться

Я думаю, что это был бы лучший ideea для хранения меток времени Unix в поле DB. Когда необходимо отобразить даты на естественный язык, можно всегда использовать дату php () функция. Для всего остального просто используйте числовую метку времени.

1
ответ дан 8 December 2019 в 16:12
поделиться
Другие вопросы по тегам:

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