用PHP从XML转换数据格式


Converting data format with PHP from XML

在XML文件中,接收到的日期格式为:20140327163000 (YYYYMMDDHHMINSEC)。我需要解析日期并将其转换为以下格式(DD/MM/YYYY HH:MIN:SS),然后将其发布到数据库中。以下是我使用的代码,但它没有在数据库中发布任何内容:

<?php 
// Create connection
$con=mysqli_connect("localhost","test","test","epg");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
$dir = "xml-files/";
if (is_dir($dir)) {
  if ($dh = opendir($dir)) {
    while (($file = readdir($dh)) !== false) {
      if (($file !== '.') && ($file !== '..') ) {
    $doc = simplexml_load_file($dir . $file); 
foreach ( $doc->ScheduleData->ChannelPeriod as $channelPeriod )
{
   $channelId = $channelPeriod->ChannelId;
   foreach ( $channelPeriod->Event as $event )
   {
      $beginTime = $event['beginTime'];
      $duration = $event['duration'];
      $programName = $event->EpgProduction->EpgText->Name;
      $description = $event->EpgProduction->EpgText->Description;
      $EventId = $event->EventId;
         $format = 'd-m-Y H:i:s';
        $date = DateTime::createFromFormat($format, '$beginTime');
      $sql = "insert into `epg` (`EventId`,`ChannelId`, `BeginTime`,`Duration`, `ShortName`, `Description`) values ('$EventId','$channelId', '$date','$duration', '$programName', '$description')";
        if (mysqli_query($con,$sql))
      {
      echo "Database updated successfully<br />";
      }
    else
      {
      echo "Error creating database: " . mysqli_error($con)."<br />";
      }

                    }
                }
            }
        }
  closedir($dh);
    }
}
$sql_delete = "DELETE FROM `EPG` WHERE BeginTime < ";
function deleteFiles($dir) {
    $files = glob($dir);
    foreach($files as $file){ 
      if(is_file($file))
        unlink($file); 
    }
}
deleteFiles("xml-files/*");
?>

试试这个,看看是否适合你:

$date = new DateTime(20140327163000);
var_dump($date->format('d/m/Y H:i:s'));
编辑:

因此,不要使用值20140327163000,而是使用一个变量来保存您想要保存的值(当然不要使用var_dump)—这只是为了表示这段代码将解析给定的值,并按照您的需要格式化字符串。

$date = new DateTime($yourValue);
$dateToSave = $date->format('d/m/Y H:i:s');