পিএইচপি-তে তারিখের সময়টিতে মিনিট যুক্ত করা হচ্ছে


99

আমি অনেক সময় গুগলিং এবং পিএইচপি ম্যানুয়াল রিডিং করার পরে ডেটটাইমে এক্স মিনিট যুক্ত করতে আটকে আছি, আমি কোথাও পাচ্ছি বলে মনে হয় না।

আমার কাছে তারিখের সময়ের ফর্ম্যাটটি হ'ল:

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

যুক্ত করার মিনিটগুলি কেবল 0 এবং 59 এর মধ্যে একটি সংখ্যা হবে

আমি চাই যে আউটপুটটি যুক্ত হওয়া মিনিটের সাথে ইনপুট ফর্ম্যাটটির সমান হয়।

আমার চেষ্টা আমাকে কোথাও পেয়েছে বলে মনে হচ্ছে না এমন কেউ কি আমাকে একটি ওয়ার্কিং কোড উদাহরণ দিতে পারে?

উত্তর:


178
$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যেখানে {*}অংশের ইঙ্গিত কতকাল সময়কাল একটি সংখ্যা মান দ্বারা প্রতিস্থাপিত হয়।

উদাহরণস্বরূপ, P1Y2DT5Sমানে 1 বছর, 2 দিন এবং 5 সেকেন্ড।

উপরের উদাহরণে, আমরা কনস্ট্রাক্টরকে PT5M(বা 5 মিনিট) সরবরাহ করছি DateInterval


তারিখ সহ: 2011-11-18 00:00 আমি যদি 5 মিনিট যোগ করি তবে আমি ফলাফল হিসাবে 2012-04-18 00:00 পাই। $ $ সময় = নতুন তারিখটাইম (RE _ অনুরোধ ['শুরু']]); $ সময়-> অ্যাড (নতুন ডেটইন্টারওয়ালওয়াল ('পি'। $ সময়কাল। 'এম')); $ endTime = $ সময়-> ফর্ম্যাট ('Ymd H: i'); প্রতিধ্বনি $ endTime; The ফর্ম্যাটিংয়ের জন্য অ্যাপলজিগুলি, দেখা যাচ্ছে আমি আজ এটির কাজও করতে পারব না ^ _ ^
লূক বি

4
ডেটটাইম স্ট্রোটোটাইমের চেয়ে কীভাবে ভাল?
বোজডোজ

11
'পিটি' কোনটি উপস্থাপন করে?
নিকোলাস জন

4
@ বোজডোজ কোন পদ্ধতিটি "আরও ভাল" তা প্রশ্ন নয়। strtotimeএকটি ইউনিক্স টাইমস্ট্যাম্প তৈরি করে integerযা সহায়ক হিসাবে যদি আপনি উদাহরণস্বরূপ পিএইচপি তে তারিখগুলি বাছাই করে থাকেন। DateTimeবর্গ বস্তু এবং পদ্ধতিগত শৈলী অপারেশনের জন্য বিকল্প প্রদান করে। এটি আরও পাঠযোগ্য এবং বিভিন্ন টাইমজোনগুলির মধ্যে পার্থক্য পরিচালনার জন্য আরও ভাল সমর্থন রয়েছে; উদাহরণস্বরূপ, যদি আপনার এমন একটি প্রকল্প থাকে যা একই ডেটা উদাহরণ থেকে উত্সর্গীকৃত বিভিন্ন ভিন্ন সময় অঞ্চলগুলির তারিখকে ছাড়িয়ে যায়।
ড্রয়নেট

4
@ নিকোলাস জন 16 পিএইচপিএন / ম্যানুয়াল /en/dateinterval.construct.php >> ফর্ম্যাটটি "পিরিয়ড" এর জন্য পি অক্ষর দিয়ে শুরু হবে। প্রতিটি পিরিয়ড পিরিয়ড একটি পিরিয়ড ডিজাইনার দ্বারা অনুসরণ করে একটি পূর্ণসংখ্যা মান দ্বারা প্রতিনিধিত্ব করা হয়। সময়কাল সময় উপাদানগুলি রয়েছে এমন, স্পেসিফিকেশন যে অংশ দ্বারা চিঠি টি পূর্বে হয়
ভি

114

পিএইচপি-র ডেটটাইম শ্রেণিতে একটি দরকারী পরিবর্তনকারী পদ্ধতি রয়েছে যা সহজে বোঝার জন্য পাঠ্য গ্রহণ করে।

$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
সবচেয়ে ছোট এবং সেরা!

4
শীর্ষস্থানীয় দুটি উত্তরই দুর্দান্ত এবং দুর্দান্ত কাজ করে তবে আমি এইটিকে পছন্দ করি। সহজ এবং আরও স্বজ্ঞাত বলে মনে হচ্ছে।
হার্টলেসান

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এটির দুর্দান্ত শক্তিটি আবিষ্কার করার জন্য আপনি আরও ভাল:


4
সর্বাধিক বোঝার এক
নবীন ডিএ

19

আপনি দেশীয় ফাংশন দিয়ে সহজেই এটি করতে পারেন:

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

আমি ডেটটাইম ক্লাস পদ্ধতিটি সুপারিশ করবো যদিও সবেমাত্র টিম পোস্ট করেছেন।


7

আমি ভেবেছিলাম সময় অঞ্চলগুলির সাথেও ডিল করার সময় এটি কিছুটা সহায়তা করবে। আমার পরিবর্তিত সমাধানটি @ টিম কুপারের সমাধানের উপর ভিত্তি করে, উপরের সঠিক উত্তর।

$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");

গা bold় রেখা, লাইন 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');

অথবা পিএইচপি> = 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')

4

আমি জানি না কেন সমাধান হিসাবে সেট করা পদ্ধতির কাজটি আমার পক্ষে কার্যকর হয়নি। সুতরাং আমি এখানে পোস্ট করছি যে আমার জন্য কী কাজ করেছে আশা করি এটি যে কাউকে সহায়তা করতে পারে:

$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;

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

1

উপরের উত্তরগুলিতে ব্র্যাড এবং নেমোডেন দ্বারা উল্লিখিত হিসাবে, স্ট্রোটোটাইম () একটি দুর্দান্ত ফাংশন। ব্যক্তিগতভাবে, আমি স্ট্যান্ডার্ড ডেটটাইম অবজেক্টটিকে অনেকগুলি ব্যবহারের ক্ষেত্রে অত্যধিক জটিল বলে মনে করি। উদাহরণস্বরূপ, আমি কেবল বর্তমান সময়ে 5 মিনিট যুক্ত করতে চেয়েছিলাম।

আমি একটি ফাংশন লিখেছি যা কিছু alচ্ছিক পরামিতি সহ স্ট্রিং হিসাবে একটি তারিখ ফেরত দেয়:
১) সময়: স্ট্রিং | উদা: "+5 মিনিট" (ডিফল্ট = বর্তমান সময়)
২) ফর্ম্যাট: স্ট্রিং | উদা: "Ymd H: i: s" (default = "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

এটি করার জন্য একটি ফাংশনের আরও একটি উদাহরণ: (সময় এবং অন্তর ফর্ম্যাটগুলি পরিবর্তন করা তবে তবে আপনি এটি অনুযায়ী ফাংশন ডেটের জন্য এটি পছন্দ করেন , এবং এটি ডেটইন্টারভাল এর জন্য ):

(আমি নীচের ফাংশনের একটি বিকল্প ফর্মও লিখেছি ।)

// 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? এই উত্তর কয়েক বছর আগে পোস্ট অনুরূপ উত্তর যোগ করে?
কোনটি

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