Есть массив таких строк:
10 янв 2016
04 фев 2017
15 апр 2017
...
Как их преобразовать с помощью php
в mysql
формат timestamp
в цикле?
С помощью функции strtotime предварительно заменив русские слова на английские.
$ru_dates = [
'10 янв 2016',
'04 фев 2017',
'15 апр 2017'
];
$ru_months = array( 'янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек' );
$en_months = array( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' );
$timestamps = [];
foreach($ru_dates as $ru_date){
$en_date = str_replace( $ru_months, $en_months, $ru_date );
$timestamps[] = strtotime($en_date);
}
echo '<pre>';
print_r($timestamps);
Если поле в MySQL имеет тип timestamp
, то при вставке/изменении этого поля Вы используете строку. MySQL сам преобразует корректную строку в timestamp, используя для преобразования выставленную временную зону соединения (не забудьте ее установить).
Дату же к общепринятому формату можно привести с помощью функции strptime()
, предварительно установив русскую локаль (если текущая локаль уже русская, что вполне возможно - как-то же сформировались в массиве русские названия месяцев, seltocale() можно опустить).
Код будет примерно таким
try {
$dbh = new PDO('mysql:dbname=testdb;host=127.0.0.1',
'dbuser',
'dbpass',
[PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES "utf8"']);
} catch (PDOException $e) {
echo 'Подключение не удалось: ' . $e->getMessage();
exit(1);
}
// Совместить текущую временную зону скрипта с временной зоной соединения с MySQL
$dbh->exec('SET time_zone = "' . date('P') . '"');
$oldLocale = setlocale(LC_TIME, 'ru_RU');
foreach ($dates as $datestring) {
$parsed = strptime($datestring, '%d %b %Y');
$formattedDate = (1900 + $parsed["tm_year"]) . '-' .
(1 + $parsed["tm_mon"]) . '-' . $parsed["tm_mday"];
$dbh->exec("INSERT INTO table (datetimefield) VALUES ('$formattedDate')");
}
setlocale(LC_TIME, $oldLocale);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Не работают куки в PHP, имеем массив со всеми переводами текста: $local ассоциативный массив в котором ещё массивы выглядит это всё примерно так
Ребята ,кто знает по какому принципу устроена приём платежей на сайте без сторонних агрегатов типо робокасса и тд