سؤال

وكيف يمكنني إضافة عدد معين من الأيام إلى التاريخ الحالي في PHP؟

وأنا بالفعل حصلت على التاريخ الحالي مع:

$today = date('y:m:d');

وتحتاج فقط إلى إضافة × عدد الأيام إليها

هل كانت مفيدة؟

المحلول

وphp يدعم ج ظائف تاريخ الاسلوب. يمكنك إضافة أو تاريخ الفترات substract مع عبارات على غرار اللغة الإنجليزية عن طريق وظيفة strtotime. الأمثلة ...

$Today=date('y:m:d');

// add 3 days to date
$NewDate=Date('y:m:d', strtotime("+3 days"));

// subtract 3 days from date
$NewDate=Date('y:m:d', strtotime("-3 days"));

// PHP returns last sunday's date
$NewDate=Date('y:m:d', strtotime("Last Sunday"));

// One week from last sunday
$NewDate=Date('y:m:d', strtotime("+7 days Last Sunday"));

أو

<select id="date_list" class="form-control" style="width:100%;">
<?php
$max_dates = 15;
$countDates = 0;
while ($countDates < $max_dates) {
    $NewDate=Date('F d, Y', strtotime("+".$countDates." days"));
    echo "<option>" . $NewDate . "</option>";
    $countDates += 1;
}
?>

نصائح أخرى

وفي اليوم هو 86400 ثانية.

$tomorrow = date('y:m:d', time() + 86400);

وأبسط طريقة لإضافة العاشر لا. الأيام ..

echo date('Y-m-d',strtotime("+1 day"));    //+1 day from today

وأو من التاريخ المحدد ...

echo date('Y-m-d',strtotime("+1 day", strtotime('2007-02-28')));

date_add() وظيفة يجب أن تفعل ما تريد. وبالإضافة إلى ذلك، تحقق من المستندات (غير رسمي، ولكن تلك الرسمية هي قليلا متفرق) ل DateTime كائن، هو أجمل بكثير من العمل مع من الوظائف الإجرائية في PHP.

ومع PHP 5.3

    $date = new DateTime();
    $interval = new DateInterval('P1D');
    echo $date->format('Y-m-d') , PHP_EOL;
    $date->add($interval);
    echo $date->format('Y-m-d'), PHP_EOL;
    $date->add($interval);
    echo $date->format('Y-m-d'), PHP_EOL;

وإرادة الانتاج

و2012/12/24

و2012/12/25

و2012/12/26

إذا كنت بحاجة إلى هذا الرمز في عدة أماكن ثم فإنني أقترح أن تقوم بإضافة وظيفة قصيرة للحفاظ على التعليمات البرمجية أبسط وأسهل للاختبار.

function add_days( $days, $from_date = null ) {
    if ( is_numeric( $from_date ) ) { 
        $new_date = $from_date; 
    } else { 
        $new_date = time();
    }

    // Timestamp is the number of seconds since an event in the past
    // To increate the value by one day we have to add 86400 seconds to the value
    // 86400 = 24h * 60m * 60s
    $new_date += $days * 86400;

    return $new_date;
}

وبعد ذلك يمكنك استخدامه في أي مكان مثل هذا:

$today       = add_days( 0 );
$tomorrow    = add_days( 1 );
$yesterday   = add_days( -1 );
$in_36_hours = add_days( 1.5 );

$first_reminder  = add_days( 10 );
$second_reminder = add_days( 5, $first_reminder );
$last_reminder   = add_days( 3, $second_reminder );

واضافة 15 يوم لعنصر حدد (باستخدام "على قيد الحياة إلى الموت" اقتراح)

<select id="date_list" class="form-control" style="width:100%;">
<?php
$max_dates = 15;
$countDates = 0;
while ($countDates < $max_dates) {
    $NewDate=Date('F d, Y', strtotime("+".$countDates." days"));
    echo "<option>" . $NewDate . "</option>";
    $countDates += 1;
}
?>

$NewDate=Date('Y-m-d', strtotime("+365 days"));
<اقتباس فقرة>   

صدى $ NewDate. // 2020/05/21

و$NewTime = mktime(date('G'), date('i'), date('s'), date('n'), date('j') + $DaysToAdd, date('Y'));

mktime الوثائق :

<اقتباس فقرة>   

وmktime () مفيد لعمل الحساب تاريخ والتحقق من صحة، لأنها سوف تلقائيا حساب القيمة الصحيحة للخارج نطاق الإدخال.

وميزة هذه الطريقة هي أنك يمكن إضافة أو طرح أي فاصل زمني (الساعات والدقائق والثواني والأيام والشهور، أو سنة) في وسيلة سهلة لقراءة سطر من التعليمات البرمجية.

وحذار أن هناك علاقة تبادلية في الأداء، وهذا الرمز هو حوالي 2.5x و أبطأ من strtotime ( "+ 1 اليوم") نظرا لجميع المكالمات إلى الدالة التاريخ (). تنظر إعادة استخدام هذه القيم إذا كنت في حلقة.

<?php
$dt = new DateTime;
if(isset($_GET['year']) && isset($_GET['week'])) {
    $dt->setISODate($_GET['year'], $_GET['week']);
} else {
    $dt->setISODate($dt->format('o'), $dt->format('W'));
}
$year = $dt->format('o');
$week = $dt->format('W');
?>

<a href="<?php echo $_SERVER['PHP_SELF'].'?week='.($week-1).'&year='.$year; ?>">Pre Week</a> 
<a href="<?php echo $_SERVER['PHP_SELF'].'?week='.($week+1).'&year='.$year; ?>">Next Week</a>
<table width="100%" style="height: 75px; border: 1px solid #00A2FF;">
<tr>
<td style="display: table-cell;
    vertical-align: middle;
    cursor: pointer;
    width: 75px;
    height: 75px;
    border: 4px solid #00A2FF;
    border-radius: 50%;">Employee</td>
<?php
do {
    echo "<td>" . $dt->format('M') . "<br>" . $dt->format('d M Y') . "</td>\n";
    $dt->modify('+1 day');
} while ($week == $dt->format('W'));
?>
</tr>
</table>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top