পিএইচপি তে $ তারিখে দিন যুক্ত করা হচ্ছে


216

ফর্মটিতে আমার এসকিউএল কোয়েরির অংশ হিসাবে আমার একটি তারিখ ফিরে এসেছে returned 2010-09-17

আমি নীচে ভেরিয়েবলগুলি $ তারিখ 2 থেকে $ তারিখ 5 তে সেট করতে চাই:

$Date2 = $Date + 1

$Date3 = $Date + 2

ইত্যাদি ..

যাতে এটি ফিরে আসে 2010-09-18, 2010-09-19ইত্যাদি ...

আমি চেষ্টা করেছি

date('Y-m-d', strtotime($Date. ' + 1 day'))

তবে এটি আমাকে পূর্বের তারিখ দেয় $Date

আমার তারিখগুলি 'Ymd' ফর্ম্যাট আকারে পাওয়ার সঠিক উপায় কী কী যাতে সেগুলি অন্য কোয়েরিতে ব্যবহার করা যেতে পারে?


উত্তর:


447

আপনাকে যা করতে হবে তা হ'ল এটির daysপরিবর্তে ব্যবহার করতে হবে day:

<?php
$Date = "2010-09-17";
echo date('Y-m-d', strtotime($Date. ' + 1 days'));
echo date('Y-m-d', strtotime($Date. ' + 2 days'));
?>

এবং এটি সঠিকভাবে আউটপুট দেয়:

2010-09-18
2010-09-19

7
এটি ঠিক dayপাশাপাশি ব্যবহার করে আউটপুট দেয় ... date("Y-m-d", strtotime('2010-09-17 + 1 day'))-> 2010-09-18, date("Y-m-d", strtotime('2010-09-17 + 2 day'))->2010-09-19
ড্যানিয়েল ভ্যান্ডারসলুইস

এইভাবে এটি চেষ্টা করে দেখুন এটি কার্যকর হয়েছে। আমার শুরুর তারিখের একদিন আগে কেন আমি প্রাথমিকভাবে চেষ্টা করেছিলাম তখন কেন আমি একটি মূল্য পেয়েছিলাম তা এখনও আমার ধারণা নেই।
ইস্তারি

আমার যদি যোগ করার জন্য ডি সংখ্যার জন্য ভেরিয়েবল থাকে?
কার্লোস মার্টিনস

3
@ কার্লোস প্রতিধ্বনি তারিখ ("ওয়াইএমডি", স্ট্রোটোটাইম ($ তারিখ। '+' $ ​​পরিবর্তনশীল। 'দিন'));
প্রদীপ কুমার প্রবহরন

নাহ এই পদ্ধতিটি মোটেই কাজ করে না। এটি 2004 এর কিছু তারিখ ফিরছে।
জিগবাইট

81

আপনি যদি পিএইচপি 5.3 ব্যবহার করছেন তবে আপনি কোনও DateTimeঅবজেক্ট এবং এর addপদ্ধতি ব্যবহার করতে পারেন :

$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->add(new DateInterval('P1D')); // P1D means a period of 1 day
$Date2 = $date->format('Y-m-d');

কটাক্ষপাত DateIntervalকন্সট্রাকটর ম্যানুয়েল পৃষ্ঠা অন্য সময়সীমার আপনার তারিখ যোগ করতে গঠন করা দেখতে (2 দিন হবে 'P2D', 3 হবে 'P3D', এবং তাই)।

পিএইচপি ৫.৩ ব্যতীত আপনি strtotimeযেভাবে করেছেন তা ব্যবহার করতে সক্ষম হবেন (আমি এটি পরীক্ষা করেছি এবং এটি 5.1.6 এবং 5.2.10 উভয় ক্ষেত্রেই কাজ করে):

$Date1 = '2010-09-17';
$Date2 = date('Y-m-d', strtotime($Date1 . " + 1 day"));
// var_dump($Date2) returns "2010-09-18"

দুঃখিত ড্যানিয়েল, তবে ওয়েবসারভার পিএইচপি 5.2.6 চালায়, তাই এটি কাজ করবে না
ইস্টারি

2
DateTime::constructstrtotimeতারিখটি বিশ্লেষণের জন্য একই পদ্ধতি ব্যবহার করে , তাই আপনি এটিও করতে পারেন new DateTime("+1 day $date")যা 5.3 এর প্রয়োজন হবে না
গর্ডন

আমি এটিকে নীচু করে তুলতে চাইছি না, তবে কোনওভাবেই আমি = /
স্টিভেন

এটি পিএইচপি 5.5+ এর আসল উত্তর
TheLegendryCopyCoder

29

পিএইচপি 5.2 থেকে আপনি একটি ডেটটাইম অবজেক্টের মাধ্যমে পরিবর্তনটি ব্যবহার করতে পারেন:

http://php.net/manual/en/datetime.modify.php

$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->modify('+1 day');
$Date2 = $date->format('Y-m-d');

মাস যুক্ত করার সময় সতর্ক থাকুন ... (এবং কিছুটা কম পরিমাণে বছর)


গৃহীত উত্তর কেবল 15000+ দিনের জন্য উত্তর দেয় যেখানে আপনি যখন 25000+ দিন যুক্ত করেন তখন এই উত্তর উত্তর দেয় ..
প্রদীপ কুমার

আপনি এটি একটি ডেটটাইমআইমিউটেবল () এও জিজ্ঞাসা করতে পারেন এবং আপনি আসলটি পরিবর্তনের ঝুঁকি ছাড়াই একটি পরিবর্তিত অনুলিপি পান।
জাভি মন্টেরো

17

তারিখ পরিবর্তনগুলি প্রদর্শনের জন্য এখানে একটি ছোট স্নিপেট রয়েছে:

$date = date("Y-m-d");
//increment 2 days
$mod_date = strtotime($date."+ 2 days");
echo date("Y-m-d",$mod_date) . "\n";

//decrement 2 days
$mod_date = strtotime($date."- 2 days");
echo date("Y-m-d",$mod_date) . "\n";

//increment 1 month
$mod_date = strtotime($date."+ 1 months");
echo date("Y-m-d",$mod_date) . "\n";

//increment 1 year
$mod_date = strtotime($date."+ 1 years");
echo date("Y-m-d",$mod_date) . "\n";

আপনি কি দয়া করে আমার সম্পর্কিত (কুইকিটন) [স্ট্যাকওভারফ্লো.com/q/61421783/8919244 ] দেখতে পাচ্ছেন ?
ফয়সাল

8

আপনি নিম্নলিখিত ফর্ম্যাটটি ব্যবহার করতে পারেন

strtotime("-3 days", time());
strtotime("+1 day", strtotime($date));

আপনি এইভাবে পরিবর্তনগুলি স্ট্যাক করতে পারেন:

strtotime("+1 day", strtotime("+1 year", strtotime($date)));

এই পদ্ধতির এবং অন্য উত্তরের মধ্যে একটির মধ্যে পার্থক্যটি নোট করুন: মানগুলিকে মনোযোগ দেওয়ার পরিবর্তে +1 dayএবং <timestamp>আপনি কেবলমাত্র দ্বিতীয় প্যারামিটার হিসাবে টাইমস্ট্যাম্পে পাস করতে পারেন strtotime


5

দিনের সংখ্যার জন্য একটি ভেরিয়েবল ব্যবহার করা

$myDate = "2014-01-16";
$nDays = 16;
$newDate = strtotime($myDate . '+ '.$nDays.'days');
echo newDate('d/m/Y', $soma); //format new date 

5

আপনার ক্যোয়ারির সহজ সমাধান এখানে

$date=date_create("2013-03-15"); // or your date string
date_add($date,date_interval_create_from_date_string("40 days"));// add number of days 
echo date_format($date,"Y-m-d"); //set date format of the result


0

সকলকে বেলো কোড ব্যবহার করতে হবে:

$nday = time() + ( 24 * 60 * 60);    
echo 'Now:       '. date('Y-m-d') ."\n";    
echo 'Next Day: '. date('Y-m-d', $nday) ."\n";

1
আপনার এটি এইভাবে করা উচিত নয়, অবশেষে লিপ সেকেন্ডে আপনার সমস্যা হবে
নাথান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.