পিএইচপি-তে দুটি তারিখ-সময়ের মধ্যে মিনিটের পার্থক্য কীভাবে গণনা করা যায়?
পিএইচপি-তে দুটি তারিখ-সময়ের মধ্যে মিনিটের পার্থক্য কীভাবে গণনা করা যায়?
উত্তর:
ভবিষ্যতের সর্বাধিক এক থেকে অতীতকে বিয়োগ করুন এবং 60 দ্বারা ভাগ করুন।
টাইমস ইউনিক্স ফর্ম্যাটে সম্পন্ন হয় যাতে তারা সেকেন্ডের সংখ্যাটি দেখায় মাত্র একটি বড় সংখ্যা January 1, 1970, 00:00:00 GMT
উপরের উত্তরগুলি পিএইচপি-র পুরানো সংস্করণগুলির জন্য। যে কোনও তারিখ গণনা করতে ডেটটাইম ক্লাস ব্যবহার করুন এখন পিএইচপি 5.3 আদর্শ। যেমন।
$start_date = new DateTime('2007-09-01 04:10:58');
$since_start = $start_date->diff(new DateTime('2012-09-11 10:25:00'));
echo $since_start->days.' days total<br>';
echo $since_start->y.' years<br>';
echo $since_start->m.' months<br>';
echo $since_start->d.' days<br>';
echo $since_start->h.' hours<br>';
echo $since_start->i.' minutes<br>';
echo $since_start->s.' seconds<br>';
$ যেহেতু_স্টার্টটি একটি তারিখের অন্তর্গত অবজেক্ট। নোট করুন যে দিনগুলির সম্পত্তি উপলব্ধ (কারণ আমরা ডেটটাইম ক্লাসের বিভিন্ন পদ্ধতি ব্যবহার করে ডেটইন্টারভাল অবজেক্ট তৈরি করি)।
উপরের কোডটি আউটপুট দেবে:
1837 দিন মোট
5 বছর
0 মাস
10 দিন
6 ঘন্টা
14 মিনিট
2 সেকেন্ড
মিনিটের মোট সংখ্যা পেতে:
$minutes = $since_start->days * 24 * 60;
$minutes += $since_start->h * 60;
$minutes += $since_start->i;
echo $minutes.' minutes';
এটি আউটপুট দেবে:
2645654 মিনিট
যা দুটি তারিখের মধ্যে কেটে গেছে এমন আসল সংখ্যা। ডেটটাইম শ্রেণি দিবালোক সংরক্ষণ (টাইমজোন উপর নির্ভর করে) অ্যাকাউন্টে গ্রহণ করবে যেখানে "পুরানো উপায়" তা করবে না। তারিখ এবং সময় সম্পর্কে ম্যানুয়ালটি পড়ুন http://www.php.net/manual/en/book.datetime.php
inSeconds()
বা অনুরূপ কিছু নেই, এখন সেকেন্ডের মধ্যে পার্থক্য গণনা করতে আমার যেখানেই কোড পুনরাবৃত্তি দরকার।
$dateFrom = new DateTime('2007-09-01 04:10:58'); $dateTo = new DateTime('2012-09-11 10:25:00'); echo ($dateTo->getTimestamp()-$dateFrom->getTimestamp())/60 ;
strtotime
এটির উত্তরের চেয়ে উত্তম ? এটি OOP- র ক্ষেত্রে মনে হয় যখন কার্যনির্বাহী কম সময়ে বৈধ (এবং যথেষ্ট পরিমাণে সংক্ষিপ্ত) সমাধান হিসাবে কার্যকর হয়।
উত্তরটি এখানে:
$to_time = strtotime("2008-12-13 10:42:00");
$from_time = strtotime("2008-12-13 10:21:00");
echo round(abs($to_time - $from_time) / 60,2). " minute";
/ 60,2
অর্থ: ষাটটি ভাগ করে নিকটস্থ দুটি দশমিক স্থানে গোল করুন।
strtotime
অপ্রচলিত হতে পারে তবে আপনি যদি এটি সঠিকভাবে ব্যবহার করেন তবে এটি বিশ্বাসযোগ্য নয়। তারিখগুলি সঠিকভাবে পড়তে (বা পার্স করা) করতে আপনাকে সঙ্গতিপূর্ণ তারিখের ফর্ম্যাটগুলির সাথে কাজ করার প্রয়োজন হওয়ার কারণ এটি দাঁড়িয়েছে। ISO 8601
সরঞ্জামগুলি দেখুন এবং দোষ দিবেন না: =)
<?php
$date1 = time();
sleep(2000);
$date2 = time();
$mins = ($date2 - $date1) / 60;
echo $mins;
?>
sleep
একটি তারিখের পার্থক্য গণনা করার জন্য কেন কিছু প্রয়োজন তা ব্যাখ্যা করতে পারেন ?
এটি আমার প্রোগ্রামগুলিতে কাজ করেছে, আমি ব্যবহার করছি date_diff
, আপনি এখানেdate_diff
ম্যানুয়াল পরীক্ষা করতে পারেন ।
$start = date_create('2015-01-26 12:01:00');
$end = date_create('2015-01-26 13:15:00');
$diff=date_diff($end,$start);
print_r($diff);
আপনি যা চান ফলাফল পাবেন।
টাইমজোন সহ অন্য উপায়।
$start_date = new DateTime("2013-12-24 06:00:00",new DateTimeZone('Pacific/Nauru'));
$end_date = new DateTime("2013-12-24 06:45:00", new DateTimeZone('Pacific/Nauru'));
$interval = $start_date->diff($end_date);
$hours = $interval->format('%h');
$minutes = $interval->format('%i');
echo 'Diff. in minutes is: '.($hours * 60 + $minutes);
$days = $interval->format('%d');
আলাদা এবং ভিন্ন ($days * 1440 + $hours * 60 + $minutes)
। মাস, বছর ধরে => একই যুক্তি
আমি আমার ব্লগ সাইটের জন্য এই ফাংশনটি লিখেছি (বিগত তারিখ এবং সার্ভারের তারিখের মধ্যে পার্থক্য)। এটি আপনাকে এভাবে আউটপুট দেবে
"49 সেকেন্ড আগে", "20 মিনিট আগে", "21 ঘন্টা আগে" এবং আরও অনেক কিছু
আমি একটি ফাংশন ব্যবহার করেছি যা আমাকে পাসের তারিখ এবং সার্ভারের তারিখের মধ্যে পার্থক্য পেতে পারে।
<?php
//Code written by purpledesign.in Jan 2014
function dateDiff($date)
{
$mydate= date("Y-m-d H:i:s");
$theDiff="";
//echo $mydate;//2014-06-06 21:35:55
$datetime1 = date_create($date);
$datetime2 = date_create($mydate);
$interval = date_diff($datetime1, $datetime2);
//echo $interval->format('%s Seconds %i Minutes %h Hours %d days %m Months %y Year Ago')."<br>";
$min=$interval->format('%i');
$sec=$interval->format('%s');
$hour=$interval->format('%h');
$mon=$interval->format('%m');
$day=$interval->format('%d');
$year=$interval->format('%y');
if($interval->format('%i%h%d%m%y')=="00000")
{
//echo $interval->format('%i%h%d%m%y')."<br>";
return $sec." Seconds";
}
else if($interval->format('%h%d%m%y')=="0000"){
return $min." Minutes";
}
else if($interval->format('%d%m%y')=="000"){
return $hour." Hours";
}
else if($interval->format('%m%y')=="00"){
return $day." Days";
}
else if($interval->format('%y')=="0"){
return $mon." Months";
}
else{
return $year." Years";
}
}
?>
ধরুন এটি একটি ফাইল হিসাবে সংরক্ষণ করুন "তারিখ.এফপি"। এই মত অন্য পৃষ্ঠা থেকে ফাংশন কল করুন
<?php
require('date.php');
$mydate='2014-11-14 21:35:55';
echo "The Difference between the server's date and $mydate is:<br> ";
echo dateDiff($mydate);
?>
অবশ্যই আপনি দুটি মান পাস করার জন্য ফাংশনটি পরিবর্তন করতে পারেন।
আমি মনে করি এটি আপনাকে সাহায্য করবে
function calculate_time_span($date){
$seconds = strtotime(date('Y-m-d H:i:s')) - strtotime($date);
$months = floor($seconds / (3600*24*30));
$day = floor($seconds / (3600*24));
$hours = floor($seconds / 3600);
$mins = floor(($seconds - ($hours*3600)) / 60);
$secs = floor($seconds % 60);
if($seconds < 60)
$time = $secs." seconds ago";
else if($seconds < 60*60 )
$time = $mins." min ago";
else if($seconds < 24*60*60)
$time = $hours." hours ago";
else if($seconds < 24*60*60)
$time = $day." day ago";
else
$time = $months." month ago";
return $time;
}
$minutes = floor(($seconds/60)%60);
function date_getFullTimeDifference( $start, $end )
{
$uts['start'] = strtotime( $start );
$uts['end'] = strtotime( $end );
if( $uts['start']!==-1 && $uts['end']!==-1 )
{
if( $uts['end'] >= $uts['start'] )
{
$diff = $uts['end'] - $uts['start'];
if( $years=intval((floor($diff/31104000))) )
$diff = $diff % 31104000;
if( $months=intval((floor($diff/2592000))) )
$diff = $diff % 2592000;
if( $days=intval((floor($diff/86400))) )
$diff = $diff % 86400;
if( $hours=intval((floor($diff/3600))) )
$diff = $diff % 3600;
if( $minutes=intval((floor($diff/60))) )
$diff = $diff % 60;
$diff = intval( $diff );
return( array('years'=>$years,'months'=>$months,'days'=>$days, 'hours'=>$hours, 'minutes'=>$minutes, 'seconds'=>$diff) );
}
else
{
echo "Ending date/time is earlier than the start date/time";
}
}
else
{
echo "Invalid date/time data detected";
}
}
একটি আরও সার্বজনীন সংস্করণ যা ভগ্নাংশ / দশমিক সহ দিন, ঘন্টা, মিনিট বা সেকেন্ডে ফলাফল দেয়:
function DateDiffInterval($sDate1, $sDate2, $sUnit='H') {
//subtract $sDate2-$sDate1 and return the difference in $sUnit (Days,Hours,Minutes,Seconds)
$nInterval = strtotime($sDate2) - strtotime($sDate1);
if ($sUnit=='D') { // days
$nInterval = $nInterval/60/60/24;
} else if ($sUnit=='H') { // hours
$nInterval = $nInterval/60/60;
} else if ($sUnit=='M') { // minutes
$nInterval = $nInterval/60;
} else if ($sUnit=='S') { // seconds
}
return $nInterval;
} //DateDiffInterval
এইভাবে আমি পিএইচপি> 5.2 এ "xx বার আগে" প্রদর্শিত হয়েছিল .. এখানে ডেটটাইম অবজেক্টের আরও তথ্য দেওয়া আছে
//Usage:
$pubDate = $row['rssfeed']['pubDates']; // e.g. this could be like 'Sun, 10 Nov 2013 14:26:00 GMT'
$diff = ago($pubDate); // output: 23 hrs ago
// Return the value of time different in "xx times ago" format
function ago($timestamp)
{
$today = new DateTime(date('y-m-d h:i:s')); // [2]
//$thatDay = new DateTime('Sun, 10 Nov 2013 14:26:00 GMT');
$thatDay = new DateTime($timestamp);
$dt = $today->diff($thatDay);
if ($dt->y > 0)
{
$number = $dt->y;
$unit = "year";
}
else if ($dt->m > 0)
{
$number = $dt->m;
$unit = "month";
}
else if ($dt->d > 0)
{
$number = $dt->d;
$unit = "day";
}
else if ($dt->h > 0)
{
$number = $dt->h;
$unit = "hour";
}
else if ($dt->i > 0)
{
$number = $dt->i;
$unit = "minute";
}
else if ($dt->s > 0)
{
$number = $dt->s;
$unit = "second";
}
$unit .= $number > 1 ? "s" : "";
$ret = $number." ".$unit." "."ago";
return $ret;
}
<?php
$start = strtotime('12:01:00');
$end = strtotime('13:16:00');
$mins = ($end - $start) / 60;
echo $mins;
?>
আউটপুট:
75
দুটি তারিখের মধ্যে পার্থক্য সন্ধান করার জন্য আমার সমাধানটি এখানে। এই ফাংশনটির সাহায্যে আপনি সেকেন্ড, মিনিট, ঘন্টা, দিন, বছর এবং মাসের মতো পার্থক্য খুঁজে পেতে পারেন।
function alihan_diff_dates($date = null, $diff = "minutes") {
$start_date = new DateTime($date);
$since_start = $start_date->diff(new DateTime( date('Y-m-d H:i:s') )); // date now
print_r($since_start);
switch ($diff) {
case 'seconds':
return $since_start->s;
break;
case 'minutes':
return $since_start->i;
break;
case 'hours':
return $since_start->h;
break;
case 'days':
return $since_start->d;
break;
default:
# code...
break;
}
}
আপনি এই ফাংশনটি বিকাশ করতে পারেন। আমি পরীক্ষিত এবং আমার জন্য কাজ করে। তারিখ অন্তর্বর্তী অবজেক্ট আউটপুট এখানে:
/*
DateInterval Object ( [y] => 0 [m] => 0 [d] => 0 [h] => 0 [i] => 5 [s] => 13 [f] => 0 [weekday] => 0 [weekday_behavior] => 0 [first_last_day_of] => 0 [invert] => 0 [days] => 0 [special_type] => 0 [special_amount] => 0 [have_weekday_relative] => 0 [have_special_relative] => 0 )
*/
ফাংশন ব্যবহার:
$ তারিখ = বিগত তারিখ, $ ডিফাইফ = টাইপ যেমন: "মিনিট", "দিন", "সেকেন্ড"
$diff_mins = alihan_diff_dates("2019-03-24 13:24:19", "minutes");
শুভকামনা
এইটা সাহায্য করবে....
function get_time($date,$nosuffix=''){
$datetime = new DateTime($date);
$interval = date_create('now')->diff( $datetime );
if(empty($nosuffix))$suffix = ( $interval->invert ? ' ago' : '' );
else $suffix='';
//return $interval->y;
if($interval->y >=1) {$count = date(VDATE, strtotime($date)); $text = '';}
elseif($interval->m >=1) {$count = date('M d', strtotime($date)); $text = '';}
elseif($interval->d >=1) {$count = $interval->d; $text = 'day';}
elseif($interval->h >=1) {$count = $interval->h; $text = 'hour';}
elseif($interval->i >=1) {$count = $interval->i; $text = 'minute';}
elseif($interval->s ==0) {$count = 'Just Now'; $text = '';}
else {$count = $interval->s; $text = 'second';}
if(empty($text)) return '<i class="fa fa-clock-o"></i> '.$count;
return '<i class="fa fa-clock-o"></i> '.$count.(($count ==1)?(" $text"):(" ${text}s")).' '.$suffix;
}
আমি অনেকগুলি সমাধান খুঁজে পেয়েছি তবে আমি কখনই সঠিক সমাধান পাইনি। তবে আমি কয়েক মিনিটের সন্ধান করার জন্য কিছু কোড তৈরি করেছি দয়া করে এটি পরীক্ষা করে দেখুন।
<?php
$time1 = "23:58";
$time2 = "01:00";
$time1 = explode(':',$time1);
$time2 = explode(':',$time2);
$hours1 = $time1[0];
$hours2 = $time2[0];
$mins1 = $time1[1];
$mins2 = $time2[1];
$hours = $hours2 - $hours1;
$mins = 0;
if($hours < 0)
{
$hours = 24 + $hours;
}
if($mins2 >= $mins1) {
$mins = $mins2 - $mins1;
}
else {
$mins = ($mins2 + 60) - $mins1;
$hours--;
}
if($mins < 9)
{
$mins = str_pad($mins, 2, '0', STR_PAD_LEFT);
}
if($hours < 9)
{
$hours =str_pad($hours, 2, '0', STR_PAD_LEFT);
}
echo $hours.':'.$mins;
?>
এটি ঘন্টা এবং মিনিটের মধ্যে আউটপুট দেয় উদাহরণস্বরূপ 01 ঘন্টা 02 মিনিটের মত 01:02