将日期格式更改为php中的单词

时间:2012-11-26 11:12:51

标签: php mysql

我有一个变量($ date),其中包含以下格式的事件的开始日期:

 2012-11-20 (YYYY-M-D)

我有另一个变量($ duration)持有一个数字,例如'3',即事件的天数或持续时间。如何通过duration变量递增日期变量中的日期,然后以此格式显示事件日期

 20th - 23th November

谢谢!

2 个答案:

答案 0 :(得分:3)

试试这个:

echo date('F d Y');

See php date() for more details

如果变量中有2012-11-20,则可以执行以下操作:

$date = '2012-11-20';
echo date('F d Y', strtotime($date));
//=> November 20 2012

需要考虑两件事:

  1. 如果您无法控制日期,则可能需要使用strtotime()采取额外的预防措施。如果您为strtotime()提供无效的日期字符串,则会返回false
  2. 如果时区无效,则每次调用日期/时间函数都会生成E_NOTICE,如果使用系统设置,则会生成E_STRICTE_WARNING消息TZ环境变量。另请参阅date_default_timezone_set()
  3. 更强大的解决方案:

    // date input
    $date = '2012-11-20';
    
    // set timezone
    date_default_timezone_set('America/Chicago');
    
    // validate date
    if ( ($time=strtotime($date)) === false ) {
        throw new Exception("invalid date given: {$date}");
    }
    
    // output
    echo date('F d Y', $time);
    

    修改

    您更新了有关如何获取日期范围的问题。为此,我建议如下:

    // input
    $date = '2012-11-20';
    $duration = 3;
    
    // set timezone
    date_default_timezone_set('America/Chicago');
    
    // parse date
    try {
    
        // init range
        $start = new DateTime($date);
        $end = clone $start;
    
        // modify end date based on $duration
        $end->modify(sprintf("+%d days", $duration));
    
        // output range
        echo $start->format('jS') . ' - ' . $end->format('jS F Y');
    
        //=> 20th - 23rd November 2012
    
    }
    catch (Exception $e) {
        die($e->getMessage());
    }
    

答案 1 :(得分:0)

首先,convert your date into a timestamp

$date_str = "2012-11-20";
$timestamp = strtotime($date_str);

然后convert the timestamp into the format you require

$formatted_date = date('F d Y', $timestamp);