3

ユーザーから渡された開始日と期間パラメーターに基づいて、広告の終了日を決定する関数を作成しようとしています。

例:

ユーザーが開始日を 2013 年 6 月 5 日、期間を 45 日に指定した場合:

$ad_startdate = '2013-06-05';
$ad_duration = 45;

この関数は、2013 年 7 月 20 日の終了日を自動的に取得する必要があります。

$ad_end_date = '2013-07-20';

終了日を簡単に生成できるように、月の変数に 30 日になる定数値を割り当てたことに注意してください。2 月でも 11 月でも、閏年でも、毎月の固定変数値は 30 です。

私はこれについて何かを考え出そうとしていましたが、それを理解することはできません。

$ad_startdate = '2013-06-05';
$ad_duration = 45;

// End date should be 2013-07-20


function getAdvertEndDate ($ad_startdate, $ad_duration){

    //Add up start date with duration
    $end_date = strtotime($ad_startdate) + $ad_duration;

return $end_date;
}

SOの質問を閲覧して、誰かがこれについて何かを持っているかどうかを確認しましたが、答えられたものは私の課題とは大きく異なります。これについて助けていただければ幸いです。

4

5 に答える 5

1
function getAdvertEndDate ($ad_startdate, $ad_duration){
    return date("Y-m-d", strtotime($ad_startdate) + ($ad_duration * 86400));
}

次のように使用します。

$endDate = getAdvertEndDate("2013-04-08", 40);
于 2013-05-31T09:40:49.157 に答える
1

PHP >= 5.3.0 オブジェクト指向スタイル

$date = DateTime::createFromFormat('Y-m-d', '2013-06-05');
$date->add(new DateInterval('P45D'));
echo $date->format('Y-m-d') . "\n";

または手続き型のスタイル

$date = date_create('2013-06-05');
date_add($date, date_interval_create_from_date_string('45 days'));
echo date_format($date, 'Y-m-d');

結果:

2013-07-20

コード:

function getAdvertEndDate ($ad_startdate, $ad_duration){
    $date = DateTime::createFromFormat('Y-m-d', $ad_startdate);
    $date->add(new DateInterval('P'.$ad_duration.'D'));
    return $date->format('Y-m-d');
}

PHP < 5.3 の場合、strtotime()を使用します。

function getAdvertEndDate ($ad_startdate, $ad_duration){
    //Add up start date with duration
    return date('Y-m-d', strtotime($ad_startdate. " + $ad_duration days"));
}    

echo getAdvertEndDate('2013-06-05', '45'); // 2013-07-20

http://www.php.net/manual/en/datetime.add.php

于 2013-05-31T09:41:27.320 に答える
0

これを使って:

$ad_startdate = '2013-06-05';
$ad_duration = 45;

$dateArray = explode('-', $ad_startdate);

$newDate = date('Y-m-d', strtotime('+ ' . $ad_duration . ' days', mktime(0, 0, 0, $dateArray[1], $dateArray[2], $dateArray[0]));

を使用している場合、セパレータstrtotimeを使用しているかのように、指定した日付形式を使用することはできず、形式が異なると予想されます。-strtotime()

PHP.net から

Note:
Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator between the various components: if the separator is a slash (/), then the American m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the European d-m-y format is assumed.

To avoid potential ambiguity, it's best to use ISO 8601 (YYYY-MM-DD) dates or DateTime::createFromFormat() when possible.
于 2013-05-31T09:40:45.373 に答える