Избитый вопрос до дури, но мозги уже на столько кипят, что не могу. В php новичок, прошу сильно не пинать.
Сделал я экспорт БД в Excel с рассылкой на почту. Код работает, все вроде бы хорошо, да не совсем. (гуглил, не могу прикинуть что и куда).
Прошу помочь, ане стебаться, все мы когда-то учились и сидели над задачами по программированию долгое время, хотя они и казались простыми.
Итак к делу:
код рабочий, но на выходе у меня в поле выводится дата в американском формате (она итак в БД, откуда я беру данные так записана). Как перевести ее в человеческий формат?
Заранее спасибо всем откликнувшимся, а не пинавшим. Всем добра, любите бобра :-)
Код:
// Create new PHPExcel object
echo date('H:i:s') , " Создан файл Excel" , EOL;
$objPHPExcel = new PHPExcel();
// Set document properties
echo date('H:i:s') , " Установка свойств документа" , EOL;
$objPHPExcel->getProperties()->setCreator("")
->setLastModifiedBy("")
->setTitle("")
->setSubject("")
->setDescription("")
->setKeywords("")
->setCategory("");
// Add some data
echo date('H:i:s') , " Добавление данных" , EOL;
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Проект')
->setCellValue('B1', 'Код')
->setCellValue('C1', 'Тема')
->setCellValue('D1', 'Статус')
->setCellValue('E1', 'Исполнитель')
->setCellValue('F1', 'Автор')
->setCellValue('G1', 'Создано')
->setCellValue('H1', 'Описание')
->setCellValue('I1', 'Дата совещания')
->setCellValue('J1', 'Срок исполнения');
$count = 1;
echo "Data:";
$get_jira = $DBH->query("SELECT * FROM БД WHERE OTKRITA = 1 AND Proect = 'ТАБЛИЦА'");
//while($get_jira_db = $get_jira->fetch()) {
while($get_jira_db = $get_jira->fetch(PDO::FETCH_ASSOC)) {
$count++;
$A = $get_jira_db['Proect'];
$B = $get_jira_db['CodZadachi'];
$C = $get_jira_db['Tema'];
$D = $get_jira_db['Status'];
$E = $get_jira_db['Ispolnitel'];
$F = $get_jira_db['Avtor'];
$G = $get_jira_db['DataSozdania'];
$H = $get_jira_db['Opisanie'];
$I = $get_jira_db['DataSoveschania'];
$J = $get_jira_db['SrokIspolnenia'];
//Устанавливаем кодировку столбцов, потому что без этого ни хрена не грузит в столбцы русские буквы.
$C = iconv( "cp1251","UTF-8", $C);
$D = iconv( "cp1251","UTF-8", $D);
$E = iconv( "cp1251","UTF-8", $E);
$F = iconv( "cp1251","UTF-8", $F);
//Устанавливаем автоматическую ширину столбцов непосредственно в конечном файле Excel, который получит пользователь на свой e-mail.
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setAutoSize(true);
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A'.$count, $A)
->setCellValue('B'.$count, $B)
->setCellValue('C'.$count, $C)
->setCellValue('D'.$count, $D)
->setCellValue('E'.$count, $E)
->setCellValue('F'.$count, $F)
->setCellValue('G'.$count, $G)
->setCellValue('H'.$count, $H)
->setCellValue('I'.$count, $I)
->setCellValue('J'.$count, $J);
}
echo "--data end--";
// Rename worksheet
echo date('H:i:s') , " Присвоение имени" , EOL;
$objPHPExcel->getActiveSheet()->setTitle('Выгрузка');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Save Excel 95 file
echo date('H:i:s') , " Запись в формат Excel" , EOL;
$callStartTime = microtime(true);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save(str_replace('.php', '.xls', __FILE__));
$callEndTime = microtime(true);
$callTime = $callEndTime - $callStartTime;
echo date('H:i:s') , " Файл записан как: " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL;
echo 'Создано за время ' , sprintf('%.4f',$callTime) , " seconds" , EOL;
// Echo memory usage
echo date('H:i:s') , ' Текущее использование памяти : ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL;
// Echo memory peak usage
echo date('H:i:s') , " Пиковое использование памяти: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL;
// Echo done
echo date('H:i:s') , " Файл записан" , EOL;
echo 'Файл сохранен по пути: ' , getcwd() , EOL;
// пример использования
$file = "excel.xls"; // файл
$mailTo1 = "ПОЧТА 1"; // кому
$mailTo2 = "ПОЧТА 2"; // кому
$from = "ЯЩИК С КОТОРОГО ШЛЮ"; // от кого
$subject = "Рассылка"; // тема письма
$message = "Ваша рассылка"; // текст письма
$r1 = sendMailAttachment($mailTo1, $from, $subject, $message, $file); // отправка письма c вложением
$r2 = sendMailAttachment($mailTo2, $from, $subject, $message, $file); // отправка письма c вложением
echo ($r1)?'Письмо отправлено ':'Ошибка. Письмо не отправлено!<p>';
echo ($r2)?'Письмо отправлено ':'Ошибка. Письмо не отправлено!';
//$r = sendMailAttachment($mailTo, $from, $subject, $message); // отправка письма без вложения
//echo ($r)?'Письмо отправлено':'Ошибка. Письмо не отправлено!';
/**
* Отправка письма с вложением
* @param string $mailTo
* @param string $from
* @param string $subject
* @param string $message
* @param string|bool $file - не обязательный параметр, путь до файла
*
* @return bool - результат отправки
*/
function sendMailAttachment($mailTo, $from, $subject, $message, $file = false){
$separator = "---"; // разделитель в письме
// Заголовки для письма
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: $from\nReply-To: $from\n"; // задаем от кого письмо
$headers .= "Content-Type: multipart/mixed; boundary=\"$separator\""; // в заголовке указываем разделитель
$headers .= "Content-type: text/html; charset=utf-8'\n";
// если письмо с вложением
if($file){
$bodyMail = "--$separator\n"; // начало тела письма, выводим разделитель
$bodyMail .= "Content-type: text/html; charset=utf-8\n"; // кодировка письма
$bodyMail .= "Content-Transfer-Encoding: quoted-printable"; // задаем конвертацию письма
$bodyMail .= "Content-Disposition: attachment; filename==?utf-8?B?".base64_encode(basename($file))."?=\n\n"; // задаем название файла
$bodyMail .= $message."\n"; // добавляем текст письма
$bodyMail .= "--$separator\n";
$fileRead = fopen($file, "r"); // открываем файл
$contentFile = fread($fileRead, filesize($file)); // считываем его до конца
fclose($fileRead); // закрываем файл
$bodyMail .= "Content-Type: application/octet-stream; name==?utf-8?B?".base64_encode(basename($file))."?=\n";
$bodyMail .= "Content-Transfer-Encoding: base64\n"; // кодировка файла
$bodyMail .= "Content-Disposition: attachment; filename==?utf-8?B?".base64_encode(basename($file))."?=\n\n";
$bodyMail .= chunk_split(base64_encode($contentFile))."\n"; // кодируем и прикрепляем файл
$bodyMail .= "--".$separator ."--\n";
// письмо без вложения
}else{
$bodyMail = $message;
}
$result = mail($mailTo, $subject, $bodyMail, $headers); // отправка письма
return $result;
}
Время и дата выводится сейчас у меня из БД вот так:
Jul 4 2019 12:00AM
а хотелось бы : Июль 4 12:00 2019 (можно без года). Так бы сказать облагородить