PHP में दिनांक समय जोड़ने के लिए


95

मैं वास्तव में एक्स मिनट जोड़ने के लिए एक डाइमटाइम के साथ फंस गया हूं, बहुत सारे google'ing और PHP मैनुअल पढ़ने के बाद, मुझे कहीं भी नहीं लगता है।

मेरे पास दिनांक समय प्रारूप है:

2011-11-17 05:05: year-month-day hour:minute

जोड़ने के लिए मिनट केवल 0 और 59 के बीच एक संख्या होगी

मैं चाहूंगा कि आउटपुट मिनटों के साथ इनपुट प्रारूप के समान हो।

क्या कोई मुझे एक कार्यशील कोड उदाहरण दे सकता है, क्योंकि मेरे प्रयास मुझे कहीं नहीं मिल रहे हैं?

जवाबों:


176
$minutes_to_add = 5;

$time = new DateTime('2011-11-17 05:05');
$time->add(new DateInterval('PT' . $minutes_to_add . 'M'));

$stamp = $time->format('Y-m-d H:i');

अवधि के लिए आईएसओ 8601 मानक के रूप में एक स्ट्रिंग है P{y}Y{m1}M{d}DT{h}H{m2}M{s}Sजहां {*}कुछ हिस्सों का संकेत कैसे लंबी अवधि है एक नंबर मान से बदल रहे हैं।

उदाहरण के लिए, P1Y2DT5S1 वर्ष, 2 दिन और 5 सेकंड का मतलब है।

उपरोक्त उदाहरण में, हम कंस्ट्रक्टर PT5Mको (या 5 मिनट) प्रदान कर रहे हैं DateInterval


दिनांक: 2011-11-18 00:00 के साथ अगर मैं 5 मिनट जोड़ूँ, तो मुझे परिणामस्वरूप 2012-04-18 00:00 मिलेंगे। `$ समय = नया दिनांक समय ($ _ REQUEST ['शुरू']); $ समय-> जोड़ें (नया DateInterval ('P'। $ अवधि। 'M')); $ एंडटाइम = $ समय-> प्रारूप ('Ymd H: i'); इको $ एंडटाइम; `प्रारूपण के लिए नियुक्तियां, ऐसा प्रतीत होता है कि मैं आज या तो यह काम नहीं कर सकता ^ _ ^
ल्यूक बी

2
डेटटाइम स्ट्रेटटाइम से बेहतर कैसे है?
bozdoz

11
'PT ’क्या दर्शाता है?
निकोलस

1
@bozdoz यह सवाल नहीं है कि कौन सी विधि "बेहतर" है। यदि आप उदाहरण के लिए php में तारीखों को छांट रहे हैं, तो strtotimeएक यूनिक्स टाइमस्टैम्प उत्पन्न करता है integerDateTimeवर्ग वस्तु और प्रक्रियात्मक शैली के संचालन के लिए विकल्प प्रदान करता है। यह अधिक पठनीय है और विभिन्न टाइमज़ोन के बीच अंतर से निपटने के लिए बेहतर समर्थन भी है; उदाहरण के लिए, यदि आपके पास एक परियोजना है जो एक ही डेटा उदाहरण से अलग कई टाइमज़ोन के लिए दिनांक आउटपुट करता है।
ड्रू

1
@ निकोलस जॉन १६ php.net/manual/en/dateinterval.construct.php >> प्रारूप "पी" के लिए अक्षर P से शुरू होता है। प्रत्येक अवधि की अवधि को एक पूर्णांक मान द्वारा दर्शाया जाता है, उसके बाद एक अवधि का डिज़ाइनर होता है। यदि अवधि में समय तत्व शामिल हैं, तो विनिर्देश का वह भाग T.
vee

110

PHP की DateTime कक्षा में एक उपयोगी संशोधित विधि है जो पाठ को समझने में आसान है।

$dateTime = new DateTime('2011-11-17 05:05');
$dateTime->modify('+5 minutes');

आप इसे मानकीकृत करने के लिए स्ट्रिंग प्रक्षेप या संगति का उपयोग कर सकते हैं:

$dateTime = new DateTime('2011-11-17 05:05');
$minutesToAdd = 5;
$dateTime->modify("+{$minutesToAdd} minutes");

10
सबसे छोटा और सबसे अच्छा!

1
दोनों शीर्ष उत्तर महान हैं और ठीक काम करते हैं, लेकिन मैं इसे पसंद करता हूं। बस सरल और अधिक सहज लगता है।
हार्टलेसन

38
$newtimestamp = strtotime('2011-11-17 05:05 + 16 minute');
echo date('Y-m-d H:i:s', $newtimestamp);

परिणाम है

2011-11-17 05:21:00

लाइव डेमो है here

यदि आप strtotimeअभी तक परिचित नहीं हैं, तो आपको php.netयह पता लगाने के लिए बेहतर है कि यह महान शक्ति है :-)


1
सबसे ज्यादा एक समझ
नवीन डीए

19

आप इसे आसानी से देशी कार्यों के साथ कर सकते हैं:

strtotime('+59 minutes', strtotime('2011-11-17 05:05'));

मैं डेटाइम क्लास विधि की सिफारिश करूंगा, हालांकि, टिम द्वारा पोस्ट किया गया है।


7

मैंने सोचा कि समय क्षेत्र के साथ काम करते समय यह कुछ मदद करेगा। मेरा संशोधित समाधान @Tim कूपर के समाधान से ऊपर आधारित है, ऊपर सही उत्तर है।

$minutes_to_add = 10;
$time = new DateTime();
**$time->setTimezone(new DateTimeZone('America/Toronto'));**
$time->add(new DateInterval('PT' . $minutes_to_add . 'M'));
$timestamp = $time->format("Y/m/d G:i:s");

बोल्ड लाइन, लाइन 3, इसके अतिरिक्त है। मुझे उम्मीद है कि इससे कुछ लोगों को भी मदद मिलेगी।


4

थोड़ा देर से जवाब, लेकिन मैं जिस विधि का उपयोग करेगा वह है:

// Create a new \DateTime instance
$date = DateTime::createFromFormat('Y-m-d H:i:s', '2015-10-26 10:00:00');

// Modify the date
$date->modify('+5 minutes');

// Output
echo $date->format('Y-m-d H:i:s');

या PHP में = = 5.4

echo (DateTime::createFromFormat('Y-m-d H:i:s', '2015-10-26 10:00:00'))->modify('+5 minutes')->format('Y-m-d H:i:s')

3

यदि आप एक चर देना चाहते हैं जिसमें मिनट शामिल हैं।

तब मुझे लगता है कि यह इसे हासिल करने का एक शानदार तरीका है।

$minutes = 10;
$maxAge = new DateTime('2011-11-17 05:05');
$maxAge->modify("+{$minutes} minutes");

2

उपयोग strtotime("+5 minute", $date);


उदाहरण:

$date = "2017-06-16 08:40:00";
$date = strtotime($date);
$date = strtotime("+5 minute", $date);
echo date('Y-m-d H:i:s', $date);

2

मुझे नहीं पता कि क्यों समाधान के रूप में सेट दृष्टिकोण मेरे लिए काम नहीं किया। तो मैं यहाँ पोस्ट कर रहा हूँ कि मेरे लिए क्या काम किया है आशा है कि यह किसी को भी मदद कर सकता है:

$startTime = date("Y-m-d H:i:s");

//display the starting time
echo '> '.$startTime . "<br>";

//adding 2 minutes
$convertedTime = date('Y-m-d H:i:s', strtotime('+2 minutes', strtotime($startTime)));

//display the converted time
echo '> '.$convertedTime;

1

जैसा कि ऊपर दिए गए उनके जवाबों में ब्रैड और नेमोडेन ने उल्लेख किया है, स्ट्रेटोटाइम () एक शानदार कार्य है। व्यक्तिगत रूप से, मैंने पाया कि कई उपयोग के मामलों के लिए मानक DateTime ऑब्जेक्ट अत्यधिक जटिल है। मैं वर्तमान समय में केवल 5 मिनट जोड़ना चाहता था, उदाहरण के लिए।

मैंने एक फ़ंक्शन लिखा जो कुछ वैकल्पिक मापदंडों के साथ स्ट्रिंग के रूप में एक तारीख देता है:
1.) समय: स्ट्रिंग | ex: "+5 मिनट" (डिफ़ॉल्ट = वर्तमान समय)
2.) प्रारूप: स्ट्रिंग | ex: "Ymd H: i: s" (डिफ़ॉल्ट = "Ymd H: i: s O")

जाहिर है, यह पूरी तरह से चित्रित पद्धति नहीं है। वर्तमान तिथि को संशोधित / स्वरूपित करने के लिए बस एक त्वरित और सरल कार्य है।

function get_date($time=null, $format='Y-m-d H:i:s O')
{
    if(empty($time))return date($format);
    return date($format, strtotime($time));
}

// Example #1: Return current date in default format
$date = get_date(); 

// Example #2: Add 5 minutes to the current date
$date = get_date("+5 minutes"); 

// Example #3: Subtract 30 days from the current date & format as 'Y-m-d H:i:s'
$date = get_date("-30 days", "Y-m-d H:i:s"); 

0

ऐसा करने के लिए एक फ़ंक्शन का एक और उदाहरण: (समय और अंतराल स्वरूपों को बदलना, हालांकि फ़ंक्शन के लिए उनके अनुसार यह आपको पसंद है । और यह DateInterval के लिए ):

(मैंने नीचे दिए गए फ़ंक्शन का एक वैकल्पिक रूप भी लिखा है ।)

// Return adjusted time.

function addMinutesToTime( $dateTime, $plusMinutes ) {

    $dateTime = DateTime::createFromFormat( 'Y-m-d H:i', $dateTime );
    $dateTime->add( new DateInterval( 'PT' . ( (integer) $plusMinutes ) . 'M' ) );
    $newTime = $dateTime->format( 'Y-m-d H:i' );

    return $newTime;
}

$adjustedTime = addMinutesToTime( '2011-11-17 05:05', 59 );

echo '<h1>Adjusted Time: ' . $adjustedTime . '</h1>' . PHP_EOL . PHP_EOL;


-1

एक चर का उपयोग किए बिना:

 $yourDate->modify("15 minutes");
 echo $yourDate->format( "Y-m-d H:i");

एक चर का उपयोग करने के साथ:

 $interval= 15;
 $yourDate->modify("+{$interval } minutes");  
 echo $yourDate->format( "Y-m-d H:i");

क्या है $yourDate? सालों पहले पोस्ट किए गए समान उत्तरों से यह उत्तर क्या जोड़ता है?
कोई भी

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