次の形式のイベントの開始日を保持する変数($ date)があります。
2012-11-20 (YYYY-M-D)
また、イベントの日数または期間である「3」などの数値を保持する別の変数($ duration)があります。日付変数の日を期間変数でインクリメントしてから、この形式でイベントの日付を表示するにはどうすればよいですか?
20th - 23th November
ありがとう!
これを試して:
echo date('F d Y');
変数がある場合は2012-11-20
、次のように実行できます。
$date = '2012-11-20';
echo date('F d Y', strtotime($date));
//=> November 20 2012
考慮すべき2つのこと:
strtotime()
。無効なstrtotime()
日付文字列を指定すると、false
E_NOTICE
、タイムゾーンが無効な場合はaが生成され、システム設定または環境変数を使用している場合はE_STRICT
またはE_WARNING
メッセージが生成されます。date_default_timezone_set()TZ
も参照してくださいより堅牢なソリューション:
// 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());
}
$date_str = "2012-11-20";
$timestamp = strtotime($date_str);
$formatted_date = date('F d Y', $timestamp);