我有一个变量($date)保存事件的开始日期,格式如下:
2012-11-20 (YYYY-M-D)
我还有另一个变量($duration),其中包含一个数字,例如“3”,表示事件的天数或持续时间。我如何通过持续时间变量增加日期变量中的日期,然后以这种格式显示事件日期
20th - 23th November
谢谢!
最佳答案
试试这个:
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());
}
关于php - 在php中将日期格式更改为word,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13563665/