DATETIME प्रारूप मान में 1 दिन जोड़ना


87

कुछ स्थितियों में मैं अपने DATETIME स्वरूपित चर के मूल्य में 1 दिन जोड़ना चाहता हूं:

$start_date = date('Y-m-d H:i:s', strtotime("{$_GET['start_hours']}:{$_GET['start_minutes']} {$_GET['start_ampm']}"));

इसे करने का बेहतरीन तरीका क्या है?

जवाबों:


63

यदि आप PHP में ऐसा करना चाहते हैं:

// replace time() with the time stamp you want to add one day to
$startDate = time();
date('Y-m-d H:i:s', strtotime('+1 day', $startDate));

यदि आप MySQL में तारीख जोड़ना चाहते हैं:

-- replace CURRENT_DATE with the date you want to add one day to
SELECT DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY);

क्या यह मुझे वर्तमान समय नहीं देगा? मुझे अभी भी अपने उपयोगकर्ता को इनपुट किए समय की आवश्यकता है।
इयान

हाँ, लेकिन यह मैंने आपको चिन्हित किया है कि आपको कस्टम समय में किन मूल्यों को बदलना चाहिए। आप बस के time()साथ बदल सकते हैं strtotime("{$_GET['start_hours']}:{$_GET['start_minutes']} {$_GET['start_ampm']}")
रायल

यह गर्मी नहीं है / / सर्दियों बचाओ! कृपया DST सेव डेट / टाइम मैनिपुलेशन का उपयोग करें
स्टीवन

208

इसके बाद ऐसा करने का एक तरीका है DateTime के साथ जो PHP 5.2 में पेश किया गया था। इसका उपयोग strtotime()करने के विपरीत दिन की बचत समय और लीप वर्ष के लिए जिम्मेदार होगा।

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

// Available in PHP 5.3

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

// Available in PHP 5.4

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

// Available in PHP 5.5

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

आह, एक लूप दा लूप
फंक फोर्टी निनेर

9
यदि एक दिन से अधिक जोड़ रहे हैं, तो आप या तो बहुवचन या एकवचन का उपयोग कर सकते हैं और एक ही परिणाम प्राप्त कर सकते हैं जैसे: +2 dayया +2 days(स्पष्ट रूप +2 daysसे अधिक शब्दार्थ सही है)
timhc22

इन विधियों के बीच व्यावहारिक अंतर क्या हैं? पहला उदाहरण मेरे लिए सबसे सरल और सबसे अर्थपूर्ण लगता है।
BadHorsie

24

दिनांक समय निर्माता एक पैरामीटर लेता है string time$timeअलग-अलग चीजें हो सकती हैं, इसे डेटाइम प्रारूप का सम्मान करना होगा ।

उदाहरण के रूप में कुछ मान्य मूल्य हैं:

  • 'now' (डिफ़ॉल्ट मान)
  • 2017-10-19
  • 2017-10-19 11:59:59
  • 2017-10-19 +1day

तो, आपके मामले में आप निम्नलिखित का उपयोग कर सकते हैं।

$dt = new \DateTime('now +1 day'); //Tomorrow
$dt = new \DateTime('2016-01-01 +1 day'); //2016-01-02

3
बिना स्पष्टीकरण के जवाब देना? पढ़ें मैं एक अच्छा जवाब कैसे लिखूं?
शशांथ

10
  1. strtotimeस्ट्रिंग को टाइम स्टैम्प में बदलने के लिए उपयोग करें
  2. इसमें एक दिन जोड़ें (उदाहरण के लिए: 86400 सेकंड जोड़कर (24 * 60 * 60))

उदाहरण के लिए:

$time = strtotime($myInput);
$newTime = $time + 86400;

यदि यह केवल 1 दिन जोड़ रहा है, तो स्ट्रेटोटाइम का फिर से उपयोग करना संभवतः ओवरकिल है।


इसलिए मुझे इसे एक TIMESTAMP तो DATETIME प्रारूप में वापस बदलना होगा?
इयान

4
मुझे लगता है कि यह भी ध्यान दिया जाना चाहिए कि हर दिन 24 घंटे लंबा नहीं है। दुनिया में ज्यादातर जगहों पर, दिन के उजाले की बचत (गर्मी का समय) का मतलब है कि साल में एक दिन केवल 23 घंटे का होता है, और दूसरे दिन 25 घंटे का होता है।
निक नेम

यूपीएस। आप एक टाइमस्टैम्प में एक डेटाटाइम परिवर्तित करते हैं, इसलिए यह यूटीसी आधारित है। और UTC दिन हमेशा 24h लंबे होते हैं। जब date()स्थानीय समयक्षेत्र के साथ वापस परिवर्तित करना ध्यान में रखा जाता है जो दिन के उजाले की बचत का ध्यान रखेगा।
रबडडे

5

आप उपयोग कर सकते हैं

$now = new DateTime();
$date = $now->modify('+1 day')->format('Y-m-d H:i:s');

1

मेरा सुझाव है कि Zend_Date कक्षाओं का उपयोग Zend फ्रेमवर्क से शुरू करें । मुझे पता है, इसकी एक छोटी सी बात है, लेकिन मैं इस तरह से चाहूंगा :-)

$date = new Zend_Date();
$date->add('24:00:00', Zend_Date::TIMES);
print $date->get();

क्या आप मेरे संबंधित (quesiton) [ stackoverflow.com/q/61421783/8919244] देख सकते हैं ?
मोइज़

1

आप निम्नलिखित के रूप में उपयोग कर सकते हैं।

$start_date = date('Y-m-d H:i:s');
$end_date = date("Y-m-d 23:59:59", strtotime('+3 days', strtotime($start_date)));

आप दिनों को भी स्थिर और नीचे की तरह उपयोग कर सकते हैं।

if (!defined('ADD_DAYS')) define('ADD_DAYS','+3 days');
$end_date = date("Y-m-d 23:59:59", strtotime(ADD_DAYS, strtotime($start_date)));

0

दिन जोड़ने के लिए सर्वर अनुरोध समय का उपयोग करना। उम्मीद के मुताबिक काम करना।

25/08/19 => 27/09/19

$timestamp = $_SERVER['REQUEST_TIME'];
$dateNow = date('d/m/y', $timestamp);
$newDate = date('d/m/y', strtotime('+2 day', $timestamp));

किसी भी संख्या को जोड़ने के लिए यहां '+2 दिन' हैं।


0

Php date में दिनों को जोड़ने का एक अधिक संक्षिप्त और सहज तरीका है। मुझे गलत मत समझो, उन php अभिव्यक्तियाँ बहुत अच्छी हैं, लेकिन आपको हमेशा यह समझना होगा कि उनका इलाज कैसे किया जाए। मुझे उसके लिए स्वतः-पूर्ण सुविधा याद आती है।

यहां बताया गया है कि मैं उन मामलों को कैसे संभालता हूं:

(new Future(
    new DateTimeFromISO8601String('2014-11-21T06:04:31.321987+00:00'),
    new OneDay()
))
    ->value();

मेरे लिए, यह अधिक सहज और स्वत: पूर्ण करने का तरीका है। हर बार समाधान के लिए Google की आवश्यकता नहीं है।

एक अच्छा बोनस के रूप में, आपको परिणामी मूल्य को प्रारूपित करने के बारे में चिंता करने की ज़रूरत नहीं है, यह पहले से ही ISO8601 प्रारूप है।

यह मेरिंग्यू लाइब्रेरी है, यहां और भी उदाहरण हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.