将日期转换为其他格式


transform dates into other format?

我有许多事件日期被读取为2013121220100125,也可以是用户作为事件提交的任何日期(结构为yyyymmdd

现在我制作了一个函数,显示当月的所有事件。但日期被读取为20131212

如何替换20131212或转换为格式的任何日期2013/12/12事件存储在txt文件中

这适用于所有类似的结构这可能吗?

代码

   <link href="plugins/calender/calendar.min.css" rel="stylesheet" type="text/css">
<script src="plugins/calender/calendar.full.js"></script>
<div class="style1">
<div class="calendar" data-color="<?php echo $calendarcolor ?>">
<?php include('admin/events/events.txt') ?>
</div>
</div>
<br>
<H3>Aankomende events</H3>
<script type="text/javascript">
$(document).ready(function(){
    //how much items per page to show
    var show_per_page = 1; 
    //getting the amount of elements inside content div
    var number_of_items = $('#content').children().size();
    //calculate the number of pages we are going to have
    var number_of_pages = Math.ceil(number_of_items/show_per_page);
    //set the value of our hidden input fields
    $('#current_page').val(0);
    $('#show_per_page').val(show_per_page);
    //now when we got all we need for the navigation let's make it '
    /* 
    what are we going to have in the navigation?
        - link to previous page
        - links to specific pages
        - link to next page
    */
    var navigation_html = '<a class="previous_link" href="javascript:previous();">Vorige</a>';
    var current_link = 0;
    while(number_of_pages > current_link){
        navigation_html += '<a class="page_link" href="javascript:go_to_page(' + current_link +')" longdesc="' + current_link +'">'+ (current_link + 1) +'</a>';
        current_link++;
    }
    navigation_html += '<a class="next_link" href="javascript:next();">Volgende</a>';
    $('#page_navigation').html(navigation_html);
    //add active_page class to the first page link
    $('#page_navigation .page_link:first').addClass('active_page');
    //hide all the elements inside content div
    $('#content').children().css('display', 'none');
    //and show the first n (show_per_page) elements
    $('#content').children().slice(0, show_per_page).css('display', 'block');
});
function previous(){
    new_page = parseInt($('#current_page').val()) - 1;
    //if there is an item before the current active link run the function
    if($('.active_page').prev('.page_link').length==true){
        go_to_page(new_page);
    }
}
function next(){
    new_page = parseInt($('#current_page').val()) + 1;
    //if there is an item after the current active link run the function
    if($('.active_page').next('.page_link').length==true){
        go_to_page(new_page);
    }
}
function go_to_page(page_num){
    //get the number of items shown per page
    var show_per_page = parseInt($('#show_per_page').val());
    //get the element number where to start the slice from
    start_from = page_num * show_per_page;
    //get the element number where to end the slice
    end_on = start_from + show_per_page;
    //hide all children elements of content div, get specific items and show them
    $('#content').children().css('display', 'none').slice(start_from, end_on).css('display', 'block');
    /*get the page link that has longdesc attribute of the current page and add active_page class to it
    and remove that class from previously active page link*/
    $('.page_link[longdesc=' + page_num +']').addClass('active_page').siblings('.active_page').removeClass('active_page');
    //update the current page input field
    $('#current_page').val(page_num);
}
</script>
<!-- the input fields that will hold the variables we will use -->
      <input type='hidden' id='current_page' />
    <input type='hidden' id='show_per_page' />

<div id='content'> 

    <?php
$file = fopen("admin/events/events.txt", "r");
while(!feof($file)){
    $line = fgets($file);
$line = str_replace("<div data-role='day' data-day='", "<b><u>Datum:</b></u> (yyyy/mm/dd formaat) ", $line);
$line = str_replace("'><div data-role='event' data-name='<h1>", " <br><b><u>Event:</b></u> ", $line);
$line = str_replace("' data-start='", " <br><b><u>Start:</b></u> ", $line);
$line = str_replace("' data-end='", " <br><b><u>Einde:</b></u> Tot ", $line);
$line = str_replace("' data-location='", " <br><b><u>Locatie:</b></u> ", $line);
$line = str_replace("</h1>", " <br><b><u>Inhoud event:</b></u><br> ", $line);
$line = str_replace("'></div></div>", "", $line);
echo "<div class='event'>$line</div>"; 
}
fclose($file);
?>

</div>
<br>
<div id='page_navigation'></div>

您可以尝试一下。它对你有用。

<?php
$str = '20131212';
$date = new DateTime($str);
echo $date->format('Y/m/d');
?>

以上代码的输出为2013/12/12

你的意思是对的?

<?php
$dt = '20131212';
$ctime = DateTime::createFromFormat('Ymd', $dt);
echo $ndate= $ctime->format('Y/m/d'); // "prints" 2013/12/12

像这样尝试

$yourdate= date('Ymd');    
echo date('Y-m-d',strtotime($yourdate));

也许这样的东西对你有用:

$new_dt=preg_replace('/^('d{4})('d{2})('d{2})$/', "'1/'2/'3", $dt);
if (strpos($new_dt, "/") === false) {
    //did nothing since the date format was wrong!
}else{
    echo "New date format: $new_dt";
}

我找到了问题的答案,希望其他人也能找到这个答案

<?php
$file = fopen("admin/events/events.txt", "r");
while(!feof($file)){
    $line = fgets($file);
$text= $line; 
$result=htmlentities($text);
$s = $result;
preg_match_all('/data-day=''([^'']*)''/', $s, $matches);
foreach($matches[1] as $idx => $datevalue)
{
    $year = substr($datevalue, 0, 4);
    $month = substr($datevalue, 4, 2);
    $day = substr($datevalue, 6, 2);
}
$line = str_replace("<div data-role='day' data-day='$year$month$day", "<b><u>Datum:</b></u> $year-$month-$day ", $line);
$line = str_replace("'><div data-role='event' data-name='<h1>", " <br><b><u>Event:</b></u> ", $line);
$line = str_replace("' data-start='", " <br><b><u>Start:</b></u> ", $line);
$line = str_replace("' data-end='", " <br><b><u>Einde:</b></u> Tot ", $line);
$line = str_replace("' data-location='", " <br><b><u>Locatie:</b></u> ", $line);
$line = str_replace("</h1>", " <br><b><u>Inhoud event:</b></u><br> ", $line);
$line = str_replace("'></div></div>", "", $line);
echo "<div class='event'>$line</div>"; 
}
fclose($file);
?>