PHP, तारीख से कल की तारीख प्राप्त करें


88

मेरे पास के रूप में एक PHP तारीख है 2013-01-22और मैं उसी प्रारूप में कल की तारीख प्राप्त करना चाहता हूं, इसलिए उदाहरण के लिए 2013-01-23

PHP के साथ यह कैसे संभव है?

जवाबों:


201

डेटटाइम का उपयोग करें

$datetime = new DateTime('tomorrow');
echo $datetime->format('Y-m-d H:i:s');

या:

$datetime = new DateTime('2013-01-22');
$datetime->modify('+1 day');
echo $datetime->format('Y-m-d H:i:s');

या:

$datetime = new DateTime('2013-01-22');
$datetime->add(new DateInterval("P1D"));
echo $datetime->format('Y-m-d H:i:s');

या PHP 5.4+ में:

echo (new DateTime('2013-01-22'))->add(new DateInterval("P1D"))
                                 ->format('Y-m-d H:i:s');

1
यह वर्तमान का उपयोग करता है, मुझे एक निश्चित तिथि में पास करना होगा।
जस्टिन

दूसरा तरीका शायद सबसे अच्छा है।
निकब

72
 $tomorrow = date("Y-m-d", strtotime('tomorrow'));

या

  $tomorrow = date("Y-m-d", strtotime("+1 day"));

सहायता लिंक: STRTOTIME ()


1
मैंने इसका उपयोग किया और सभी उत्तरों में सबसे छोटा और सरल संस्करण है, धन्यवाद!
बॉम्बेलमैन

17

चूंकि आपने इसके साथ टैग किया है , आप इसे +1 dayजैसे संशोधक के साथ उपयोग कर सकते हैं :

$tomorrow_timestamp = strtotime('+1 day', strtotime('2013-01-22'));

उस ने कहा, यह डेटाइम का उपयोग करने के लिए एक बेहतर समाधान है ।


14
<? php 

//1 Day = 24*60*60 = 86400

echo date("d-m-Y", time()+86400); 

?>

17
ध्यान दें कि यह किनारे के मामलों (दिन की बचत समय) में विफल हो जाएगा।
जेजे जूल

यह उत्तर गलत है। मेरे पास क्रोनजोब का उपयोग लूप में है, और सिस्टम मर गया।
ज्वेलिंगुयेन


3

उपयोग करें DateTime:

अब से कल प्राप्त करने के लिए:

$d = new DateTime('+1day');
$tomorrow = $d->format('d/m/Y h.i.s');
echo $tomorrow;

परिणाम: 28/06/2017 08.13.20

एक तारीख से कल प्राप्त करने के लिए:

$d = new DateTime('2017/06/10 08.16.35 +1day')
$tomorrow = $d->format('d/m/Y h.i.s');
echo $tomorrow;

परिणाम: 11/06/2017 08.16.35

आशा करता हूँ की ये काम करेगा!


1
/**
 * get tomorrow's date in the format requested, default to Y-m-d for MySQL (e.g. 2013-01-04)
 *
 * @param string
 *
 * @return string
 */
public static function getTomorrowsDate($format = 'Y-m-d')
{
    $date = new DateTime();
    $date->add(DateInterval::createFromDateString('tomorrow'));

    return $date->format($format);
}

1

अजीब से यह लग सकता है कि यह पूरी तरह से ठीक काम करता है: date_create( '2016-02-01 + 1 day' );

echo date_create( $your_date . ' + 1 day' )->format( 'Y-m-d' );

करना चाहिए


0

सबसे पहले, सही सार के साथ आना हमेशा एक कुंजी है। पठनीयता, स्थिरता और विस्तार की कुंजी।

यहाँ, काफी स्पष्ट उम्मीदवार एक है ISO8601DateTime। कम से कम दो कार्यान्वयन हैं: पहला एक स्ट्रिंग से एक पार्स डेटाइम है, और दूसरा एक कल है। इसलिए, दो वर्ग हैं जिनका उपयोग किया जा सकता है, और उनके संयोजन परिणाम (लगभग) वांछित परिणाम हैं:

new Tomorrow(new FromISO8601('2013-01-22'));

दोनों वस्तुओं रहे हैं , एक ISO8601 datetime इसलिए उनके शाब्दिक प्रतिनिधित्व आप वास्तव में क्या जरूरत नहीं है। इसलिए अंतिम आघात उन्हें तारीख-रूप लेने में है:

new Date(
    new Tomorrow(
        new FromISO8601('2013-01-22')
    )
);

चूँकि आपको केवल एक वस्तु नहीं, बल्कि एक पाठीय प्रतिनिधित्व की आवश्यकता होती है, आप एक value()विधि को लागू करते हैं ।

इस दृष्टिकोण के बारे में अधिक जानने के लिए, इस पोस्ट को देखें


-1

यहां कार्य कर रहा है

function plus_one_day($date){
 $date2 = formatDate4db($date);
 $date1 = str_replace('-', '/', $date2);
 $tomorrow = date('Y-m-d',strtotime($date1 . "+1 days"));
 return $tomorrow; }

formatDate4db फ़ंक्शन क्या करता है? स्ट्रिंग में स्लैश के साथ डैश को क्यों बदलें?
ब्रेविजिटालिस

formatDate4db फ़ंक्शन दिनांक पास करता है और यह डेटाबेस mysql प्रारूप और str_replace फ़ंक्शन की तरह एक प्रारूप बनाता है, मेरे पास दिनांक प्रारूप 2019/12/10 है और इसके साथ प्रतिस्थापित करें -
मुहम्मद Awais Zulifqar

-4
$date = '2013-01-22';
$time = strtotime($date) + 86400;
echo date('Y-m-d', $time);

जहाँ एक दिन में the६४०० सेकंड का # समय है।


11
नहीं, एक दिन में हमेशा 86400 सेकंड नहीं होते हैं।
निकब

मुझे समस्या नहीं आती। कृपया समझाएं @nickb
Aiyion.Prime

@ Aiyion.Prime दिन या दिन के समय की बचत से स्विच करने के लिए 86400 सेकंड नहीं है
dumazy

मैंने सोचा था कि, DST दो बजे शुरू किया जाता है और इसलिए कभी भी एक अलग तारीख में परिणाम नहीं आना चाहिए?
अयियन.प्रेम

समस्या दिन के उजाले की बचत नहीं है। एक डेटाबेस में टाइम्स को वास्तव में यूटीसी के रूप में संग्रहीत किया जाना चाहिए, जिसमें दिन के समय की बचत नहीं होती है। यदि आप UTC में अपनी तारीखें जमा कर रहे हैं तो यह ठीक काम करेगा लेकिन थोड़ा सा रुकावट है।
बृंदजीतलिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.