DATETIME ফর্ম্যাট মানটিতে 1 দিন যুক্ত করা হচ্ছে


88

নির্দিষ্ট পরিস্থিতিতে আমি আমার DATETIME ফর্ম্যাট ভেরিয়েবলের মানতে 1 দিন যুক্ত করতে চাই:

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

এই কাজ করতে সবচেয়ে ভালো উপায় কি?

উত্তর:


64

আপনি যদি পিএইচপিতে এটি করতে চান:

// 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));

আপনি যদি মাইএসকিউএলে তারিখটি যুক্ত করতে চান:

-- 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']}")
রায়য়েল

এই গ্রীষ্মের নয়- / শীতের সময় বাঁচা! দয়া করে ডিএসটি সংরক্ষণের তারিখ / সময়
হেরফের

210

ডেটটাইম সহ এটি করার আরও একটি উপায় আছে যা পিএইচপি 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আরও শব্দার্থিকভাবে সঠিক)
টিমহ্যাক 22

এই পদ্ধতির মধ্যে ব্যবহারিক পার্থক্য কি? প্রথম উদাহরণটি আমার কাছে সবচেয়ে সহজ এবং সার্থক বলে মনে হচ্ছে।
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

4
ব্যাখ্যা না দিয়ে উত্তর দিচ্ছেন? পড়ুন আমি কীভাবে একটি ভাল উত্তর লিখতে পারি?
শশাথ

11
  1. strtotimeস্ট্রিংকে একটি সময়ের স্ট্যাম্পে রূপান্তর করতে ব্যবহার করুন
  2. এটিতে একটি দিন যুক্ত করুন (উদা: 86400 সেকেন্ড যোগ করে (24 * 60 * 60))

যেমন:

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

যদি এটি কেবল 1 দিন যোগ করে, তবে আবার স্ট্রোটোটাইম ব্যবহার করা সম্ভবত ওভারকিল।


সুতরাং আমাকে এটিকে একটি TIMESTAMP এ রূপান্তর করতে হবে তারপরে একটি DATETIME ফর্ম্যাটে ফিরে যেতে হবে?
আয়ান

4
আমার ধারণা এটিও লক্ষ করা উচিত যে প্রতিদিন 24 ঘন্টা দীর্ঘ হয় না। বিশ্বের বেশিরভাগ জায়গায়, দিবালোকের সঞ্চয় (গ্রীষ্মের সময়) মানে বছরের এক দিন কেবল ২৩ ঘন্টা এবং অন্য একটি দিন 25 ঘন্টা।
নিকফ

ইউ। পি। এস. আপনি একটি ডেটটাইমকে একটি টাইমস্ট্যাম্পে রূপান্তর করেন, সুতরাং এটি ইউটিসি ভিত্তিক। এবং ইউটিসির দিনগুলি সর্বদা 24 ঘন্টা দীর্ঘ হয়। date()স্থানীয় সময় অঞ্চলের সাথে ফিরে রূপান্তর করার সময় অ্যাকাউন্টে নেওয়া হয় যা দিবালোক সংরক্ষণের যত্ন নেবে।
রাবুদে

5

তুমি ব্যবহার করতে পার

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

1

আমি Zend_Date ক্লাসগুলি জেন্ড ফ্রেমওয়ার্ক থেকে শুরু করার পরামর্শ দিচ্ছি । আমি জানি, এটি কিছুটা অফটোপিক, তবে আমি এইভাবে পছন্দ করব :-)

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

আপনি কি দয়া করে আমার সম্পর্কিত (কুইকিটন) [স্ট্যাকওভারফ্লো.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));

এখানে যে কোনও দিন যোগ করতে '+ ২ দিন' রয়েছে।


0

পিএইচপি তারিখে দিন যুক্ত করার জন্য আরও সংক্ষিপ্ত এবং স্বজ্ঞাত উপায় রয়েছে। আমাকে ভুল করবেন না, এই পিএইচপি এক্সপ্রেশনগুলি দুর্দান্ত, তবে কীভাবে তাদের আচরণ করা যায় তা আপনাকে সর্বদা গুগল করতে হবে। আমি তার জন্য অটো-সমাপ্তির সুবিধা মিস করছি।

আমি এখানে এই মামলাগুলি পরিচালনা করতে পছন্দ করি:

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

আমার জন্য, এটি বাক্স থেকে আরও স্বজ্ঞাত এবং স্বতঃপূরণ কাজ করে। প্রতিবার সমাধানের জন্য গুগল লাগবে না।

একটি দুর্দান্ত বোনাস হিসাবে, আপনাকে ফলস্বরূপ মানটি ফর্ম্যাট করার বিষয়ে চিন্তা করতে হবে না, এটি ইতিমধ্যে আইএসও 8601 ফর্ম্যাট।

এটি meringue গ্রন্থাগার, এখানে আরও উদাহরণ আছে

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