我有一个变量($ date),其中包含以下格式的事件的开始日期:
2012-11-20 (YYYY-M-D)
我有另一个变量($ duration)持有一个数字,例如'3',即事件的天数或持续时间。如何通过duration变量递增日期变量中的日期,然后以此格式显示事件日期
20th - 23th November
谢谢!
答案 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
需要考虑两件事:
strtotime()
采取额外的预防措施。如果您为strtotime()
提供无效的日期字符串,则会返回false
E_NOTICE
,如果使用系统设置,则会生成E_STRICT
或E_WARNING
消息TZ
环境变量。另请参阅date_default_timezone_set() 更强大的解决方案:
// 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);