1

次の形式のイベントの開始日を保持する変数($ date)があります。

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

また、イベントの日数または期間である「3」などの数値を保持する別の変数($ duration)があります。日付変数の日を期間変数でインクリメントしてから、この形式でイベントの日付を表示するにはどうすればよいですか?

 20th - 23th November

ありがとう!

4

2 に答える 2

6

これを試して:

echo date('F d Y');

詳細については、php date()を参照してください

変数がある場合は2012-11-20、次のように実行できます。

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

考慮すべき2つのこと:

  1. 日付を管理できない場合は、を使用して特別な予防策を講じることをお勧めしますstrtotime()。無効なstrtotime()日付文字列を指定すると、false
  2. 日付/時刻関数を呼び出すたびに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());
}
于 2012-11-26T11:13:53.460 に答える
0

まず、日付をタイムスタンプに変換します

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

次に、タイムスタンプを必要な形式に変換します

$formatted_date = date('F d Y', $timestamp);
于 2012-11-26T11:18:35.793 に答える