PHP将日期转换为d-m-Y格式

时间:2014-01-09 15:00:45

标签: php date

以下代码的结果给出:Januar 9,2014

如何才能实现:9。Januar 2014

提前致谢。

<?php
    global $months;
    $months = array('Januar', 'Februar', 'Marts', 'April', 'Maj', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'December');

    function convert_dates($text) 
    {
        $date_regexp = '/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/';
        preg_match_all($date_regexp, $text, $dates);
        $dates     = $dates[0];
        $new_dates = $dates;

        for($i=0;$i<count($new_dates);$i++) {
            $new_dates[$i] = explode('-', $new_dates[$i]);
            $new_dates[$i] = $GLOBALS['months'][abs($new_dates[$i][1])-1] . ' ' . abs($new_dates[$i][2]) . ', ' . $new_dates[$i][0];
        }

        $text = str_replace($dates, $new_dates, $text);
        return $text;
    }
?>

1 个答案:

答案 0 :(得分:0)

如果您不想要英语,请使用strftime格式化日期,并使用strtotime将Y-m-d格式转换为时间戳。

<?php
// this needs to happen before you call convert_dates
// If your system default is already correct you do not need to do this
setlocale(LC_ALL, 'da_DK.UTF-8');

function convert_dates($text) 
{
    $date_regexp = '/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/';
    preg_match_all($date_regexp, $text, $dates);
    $dates     = $dates[0];
    $new_dates = $dates;

    for($i=0;$i<count($new_dates);$i++) {
        $new_dates[$i] = strftime('%e. %B %Y', strtotime($new_dates[$i]));
    }

    $text = str_replace($dates, $new_dates, $text);
    return $text;
}