php - 在php中将日期格式更改为word

标签 php mysql

我有一个变量($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

需要考虑的两件事:

  1. 如果您无法控制日期,您可能需要使用 strtotime() 采取额外的预防措施。 .如果您给 strtotime() 一个无效的日期字符串,它将返回 false
  2. 如果时区无效,每次调用日期/时间函数都会生成一个E_NOTICE,和/或一个E_STRICTE_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/

相关文章:

php - IN() 条件中的大量占位符会减慢 PDO/Doctrine 的停止速度

php - 用图片更新Mysql内容

mysql - 使用具有 IF 和 IFNULL 的别名列的 Where 子句

MySQL 多对一设计决策

php - mysql查询错误

PHP SQL Foreach 语句

php - 使用 php 和 jquery 上传进度条

php - bash 脚本从命令行运行,但不是从 cron 运行

PHP 哈希 key 未找到 : what is the expected behavior?

MySQL UPDATE 一个表,其中包含来自另一个表的多行,以使用 REGEXP 字边界更改拼写错误的单词