আমি একটি পরিবর্তনশীল $uptimeযা সেকেন্ড, দিন, ঘন্টা, মিনিট এবং সেকেন্ডে রূপান্তর করতে চাই ।
উদাহরণ:
$uptime = 1640467;
ফলাফল হওয়া উচিত:
18 days 23 hours 41 minutes
আমি একটি পরিবর্তনশীল $uptimeযা সেকেন্ড, দিন, ঘন্টা, মিনিট এবং সেকেন্ডে রূপান্তর করতে চাই ।
উদাহরণ:
$uptime = 1640467;
ফলাফল হওয়া উচিত:
18 days 23 hours 41 minutes
উত্তর:
এটি দিয়ে অর্জন করা যেতে পারে DateTime ক্লাস
ব্যবহার:
echo secondsToTime(1640467);
# 18 days, 23 hours, 41 minutes and 7 seconds
ফাংশন:
function secondsToTime($seconds) {
$dtF = new \DateTime('@0');
$dtT = new \DateTime("@$seconds");
return $dtF->diff($dtT)->format('%a days, %h hours, %i minutes and %s seconds');
}
@পক্ষে আর্গুমেন্ট হিসাবে পাস করার অর্থ কী DateTime?
@ইউনিক্স টাইমস্ট্যাম্পের পরে মান ।
দিনগুলি অন্তর্ভুক্ত করার জন্য এটি পুনরায় লিখিত ফাংশন। কোডটি বুঝতে সহজ করে তুলতে আমি পরিবর্তনশীল নামগুলিও পরিবর্তন করেছি ...
/**
* Convert number of seconds into hours, minutes and seconds
* and return an array containing those values
*
* @param integer $inputSeconds Number of seconds to parse
* @return array
*/
function secondsToTime($inputSeconds) {
$secondsInAMinute = 60;
$secondsInAnHour = 60 * $secondsInAMinute;
$secondsInADay = 24 * $secondsInAnHour;
// extract days
$days = floor($inputSeconds / $secondsInADay);
// extract hours
$hourSeconds = $inputSeconds % $secondsInADay;
$hours = floor($hourSeconds / $secondsInAnHour);
// extract minutes
$minuteSeconds = $hourSeconds % $secondsInAnHour;
$minutes = floor($minuteSeconds / $secondsInAMinute);
// extract the remaining seconds
$remainingSeconds = $minuteSeconds % $secondsInAMinute;
$seconds = ceil($remainingSeconds);
// return the final array
$obj = array(
'd' => (int) $days,
'h' => (int) $hours,
'm' => (int) $minutes,
's' => (int) $seconds,
);
return $obj;
}
উত্স: কোডএড () - http://codeaid.net/php/convert-seconds-to-hours-minutes-and-seconds-(php)
জুলিয়ান মোরেনোর উত্তরের উপর ভিত্তি করে, তবে প্রতিক্রিয়াটিকে স্ট্রিং (কোনও অ্যারে নয়) হিসাবে দিতে পরিবর্তিত হয়েছে, কেবলমাত্র সময়ের ব্যবধানগুলি অন্তর্ভুক্ত করুন এবং বহুবচনটি অনুমান করবেন না।
এটি এবং সর্বাধিক ভোট দেওয়া উত্তরের মধ্যে পার্থক্য:
জন্য 259264সেকেন্ড, এই কোড দিতে হবে
3 দিন, 1 মিনিট, 4 সেকেন্ড
জন্য 259264সেকেন্ড, সর্বোচ্চ (Glavić দ্বারা) উত্তর ভোট দিতে হবে
3 দিন, 0 ঘন্টা , 1 মিনিট s এবং 4 সেকেন্ড
function secondsToTime($inputSeconds) {
$secondsInAMinute = 60;
$secondsInAnHour = 60 * $secondsInAMinute;
$secondsInADay = 24 * $secondsInAnHour;
// Extract days
$days = floor($inputSeconds / $secondsInADay);
// Extract hours
$hourSeconds = $inputSeconds % $secondsInADay;
$hours = floor($hourSeconds / $secondsInAnHour);
// Extract minutes
$minuteSeconds = $hourSeconds % $secondsInAnHour;
$minutes = floor($minuteSeconds / $secondsInAMinute);
// Extract the remaining seconds
$remainingSeconds = $minuteSeconds % $secondsInAMinute;
$seconds = ceil($remainingSeconds);
// Format and return
$timeParts = [];
$sections = [
'day' => (int)$days,
'hour' => (int)$hours,
'minute' => (int)$minutes,
'second' => (int)$seconds,
];
foreach ($sections as $name => $value){
if ($value > 0){
$timeParts[] = $value. ' '.$name.($value == 1 ? '' : 's');
}
}
return implode(', ', $timeParts);
}
আমি আশা করি এটা কারো সাহায্যে লাগবে.
এখানে এটি একটি সাধারণ 8-লাইন পিএইচপি ফাংশন যা বহু পরিমাণ সেকেন্ডের জন্য কয়েক মাস সহ মানব পাঠযোগ্য স্ট্রিংয়ে রূপান্তরিত করে:
পিএইচপি ফাংশন সেকেন্ডস হিউম্যান ()
function seconds2human($ss) {
$s = $ss%60;
$m = floor(($ss%3600)/60);
$h = floor(($ss%86400)/3600);
$d = floor(($ss%2592000)/86400);
$M = floor($ss/2592000);
return "$M months, $d days, $h hours, $m minutes, $s seconds";
}
gmdate("d H:i:s",1640467);
ফলাফল 19 23:41:07 হবে। এটি যখন স্বাভাবিক দিনের চেয়ে এক সেকেন্ড বেশি হয়, তখন এটি 1 দিনের জন্য দিনের মান বাড়িয়ে তুলছে। এই কারণেই এটি 19 দেখায় You আপনি আপনার প্রয়োজনের জন্য ফলাফলটি বিস্ফোরণ করতে পারেন এবং এটি ঠিক করতে পারেন।
$uptime = gmdate("y m d H:i:s", 1640467); $uptimeDetail = explode(" ",$uptime); echo (string)($uptimeDetail[0]-70).' year(s) '.(string)($uptimeDetail[1]-1).' month(s) '.(string)($uptimeDetail[2]-1).' day(s) '.(string)$uptimeDetail[3];এটি আপনাকে বছর এবং মাসের তথ্যও দেবে।
এখানে বেশ কয়েকটি খুব ভাল উত্তর রয়েছে তবে সেগুলির কোনওোটাই আমার প্রয়োজনীয়তা কভার করেনি। আমার প্রয়োজনীয় কিছু অতিরিক্ত বৈশিষ্ট্য যুক্ত করতে আমি গ্লাভিকের জবাবটি তৈরি করেছি;
আপনি কোডটির একটি চলমান সংস্করণ দেখতে পাবেন here।
function secondsToHumanReadable(int $seconds, int $requiredParts = null)
{
$from = new \DateTime('@0');
$to = new \DateTime("@$seconds");
$interval = $from->diff($to);
$str = '';
$parts = [
'y' => 'year',
'm' => 'month',
'd' => 'day',
'h' => 'hour',
'i' => 'minute',
's' => 'second',
];
$includedParts = 0;
foreach ($parts as $key => $text) {
if ($requiredParts && $includedParts >= $requiredParts) {
break;
}
$currentPart = $interval->{$key};
if (empty($currentPart)) {
continue;
}
if (!empty($str)) {
$str .= ', ';
}
$str .= sprintf('%d %s', $currentPart, $text);
if ($currentPart > 1) {
// handle plural
$str .= 's';
}
$includedParts++;
}
return $str;
}
সংক্ষিপ্ত, সহজ, নির্ভরযোগ্য:
function secondsToDHMS($seconds) {
$s = (int)$seconds;
return sprintf('%d:%02d:%02d:%02d', $s/86400, $s/3600%24, $s/60%60, $s%60);
}
সবচেয়ে সহজ পদ্ধতির মধ্যে এমন একটি পদ্ধতি তৈরি করা হবে যা ডেটটাইম থেকে একটি ডেটইন্টারওয়াল দেয়: বর্তমান সময়ের থেকে $ সেকেন্ডের মধ্যে আপেক্ষিক সময়ের চেয়ে আলাদা $ এখন আপনি চেইন এবং ফর্ম্যাট করতে পারেন। উদাহরণ স্বরূপ:-
public function toDateInterval($seconds) {
return date_create('@' . (($now = time()) + $seconds))->diff(date_create('@' . $now));
}
এখন আপনার পদ্ধতি কলটি ডেটইন্টারভাল :: ফর্ম্যাটে চেইন করুন
echo $this->toDateInterval(1640467)->format('%a days %h hours %i minutes'));
ফলাফল:
18 days 23 hours 41 minutes
যদিও এটি বেশ পুরানো প্রশ্ন - কেউ এগুলি দরকারী (দ্রুত বলে লেখা হয় না) পেতে পারেন:
function d_h_m_s__string1($seconds)
{
$ret = '';
$divs = array(86400, 3600, 60, 1);
for ($d = 0; $d < 4; $d++)
{
$q = (int)($seconds / $divs[$d]);
$r = $seconds % $divs[$d];
$ret .= sprintf("%d%s", $q, substr('dhms', $d, 1));
$seconds = $r;
}
return $ret;
}
function d_h_m_s__string2($seconds)
{
if ($seconds == 0) return '0s';
$can_print = false; // to skip 0d, 0d0m ....
$ret = '';
$divs = array(86400, 3600, 60, 1);
for ($d = 0; $d < 4; $d++)
{
$q = (int)($seconds / $divs[$d]);
$r = $seconds % $divs[$d];
if ($q != 0) $can_print = true;
if ($can_print) $ret .= sprintf("%d%s", $q, substr('dhms', $d, 1));
$seconds = $r;
}
return $ret;
}
function d_h_m_s__array($seconds)
{
$ret = array();
$divs = array(86400, 3600, 60, 1);
for ($d = 0; $d < 4; $d++)
{
$q = $seconds / $divs[$d];
$r = $seconds % $divs[$d];
$ret[substr('dhms', $d, 1)] = $q;
$seconds = $r;
}
return $ret;
}
echo d_h_m_s__string1(0*86400+21*3600+57*60+13) . "\n";
echo d_h_m_s__string2(0*86400+21*3600+57*60+13) . "\n";
$ret = d_h_m_s__array(9*86400+21*3600+57*60+13);
printf("%dd%dh%dm%ds\n", $ret['d'], $ret['h'], $ret['m'], $ret['s']);
ফলাফল:
0d21h57m13s
21h57m13s
9d21h57m13s
function seconds_to_time($seconds){
// extract hours
$hours = floor($seconds / (60 * 60));
// extract minutes
$divisor_for_minutes = $seconds % (60 * 60);
$minutes = floor($divisor_for_minutes / 60);
// extract the remaining seconds
$divisor_for_seconds = $divisor_for_minutes % 60;
$seconds = ceil($divisor_for_seconds);
//create string HH:MM:SS
$ret = $hours.":".$minutes.":".$seconds;
return($ret);
}
function convert($seconds){
$string = "";
$days = intval(intval($seconds) / (3600*24));
$hours = (intval($seconds) / 3600) % 24;
$minutes = (intval($seconds) / 60) % 60;
$seconds = (intval($seconds)) % 60;
if($days> 0){
$string .= "$days days ";
}
if($hours > 0){
$string .= "$hours hours ";
}
if($minutes > 0){
$string .= "$minutes minutes ";
}
if ($seconds > 0){
$string .= "$seconds seconds";
}
return $string;
}
echo convert(3744000);
সমাধান যা 0 টি মান বাদ দেয় এবং সঠিক একবচন / বহুবচন মান নির্ধারণ করে
use DateInterval;
use DateTime;
class TimeIntervalFormatter
{
public static function fromSeconds($seconds)
{
$seconds = (int)$seconds;
$dateTime = new DateTime();
$dateTime->sub(new DateInterval("PT{$seconds}S"));
$interval = (new DateTime())->diff($dateTime);
$pieces = explode(' ', $interval->format('%y %m %d %h %i %s'));
$intervals = ['year', 'month', 'day', 'hour', 'minute', 'second'];
$result = [];
foreach ($pieces as $i => $value) {
if (!$value) {
continue;
}
$periodName = $intervals[$i];
if ($value > 1) {
$periodName .= 's';
}
$result[] = "{$value} {$periodName}";
}
return implode(', ', $result);
}
}
গ্লাভি'র দুর্দান্ত সমাধানের বর্ধিত সংস্করণ , পূর্ণসংখ্যার বৈধতা থাকা, 1 টির সমস্যা সমাধান করা, এবং বছর এবং মাসের জন্য অতিরিক্ত সমর্থন, আরও বেশি মানুষের বান্ধব হওয়ার পক্ষে কম্পিউটার কমবেশী বান্ধব হওয়ার ব্যয়ে:
<?php
function secondsToHumanReadable(/*int*/ $seconds)/*: string*/ {
//if you dont need php5 support, just remove the is_int check and make the input argument type int.
if(!\is_int($seconds)){
throw new \InvalidArgumentException('Argument 1 passed to secondsToHumanReadable() must be of the type int, '.\gettype($seconds).' given');
}
$dtF = new \DateTime ( '@0' );
$dtT = new \DateTime ( "@$seconds" );
$ret = '';
if ($seconds === 0) {
// special case
return '0 seconds';
}
$diff = $dtF->diff ( $dtT );
foreach ( array (
'y' => 'year',
'm' => 'month',
'd' => 'day',
'h' => 'hour',
'i' => 'minute',
's' => 'second'
) as $time => $timename ) {
if ($diff->$time !== 0) {
$ret .= $diff->$time . ' ' . $timename;
if ($diff->$time !== 1 && $diff->$time !== -1 ) {
$ret .= 's';
}
$ret .= ' ';
}
}
return substr ( $ret, 0, - 1 );
}
var_dump(secondsToHumanReadable(1*60*60*2+1)); -> string(16) "2 hours 1 second"
আমার লেখা ইন্টারভাল ক্লাসটি ব্যবহার করা যেতে পারে। এটি বিপরীতেও ব্যবহার করা যেতে পারে।
composer require lubos/cakephp-interval
$Interval = new \Interval\Interval\Interval();
// output 2w 6h
echo $Interval->toHuman((2 * 5 * 8 + 6) * 3600);
// output 36000
echo $Interval->toSeconds('1d 2h');
এখানে আরও তথ্য https://github.com/LubosRemplik/ কেক পিএইচপি- আন্তঃকাল
সঙ্গে DateInterval :
$d1 = new DateTime();
$d2 = new DateTime();
$d2->add(new DateInterval('PT'.$timespan.'S'));
$interval = $d2->diff($d1);
echo $interval->format('%a days, %h hours, %i minutes and %s seconds');
// Or
echo sprintf('%d days, %d hours, %d minutes and %d seconds',
$interval->days,
$interval->h,
$interval->i,
$interval->s
);
// $interval->y => years
// $interval->m => months
// $interval->d => days
// $interval->h => hours
// $interval->i => minutes
// $interval->s => seconds
// $interval->days => total number of days
আমি জানি না যে এই উত্তরগুলির কয়েকটি হাস্যকরভাবে দীর্ঘ বা জটিল are এখানে ডেটটাইম ক্লাস ব্যবহার করা হচ্ছে । Radzserg এর উত্তর মত ধরনের। এটি কেবল প্রয়োজনীয় ইউনিটগুলি প্রদর্শন করবে এবং নেতিবাচক সময়ে 'পূর্ব' প্রত্যয়টি হবে ...
function calctime($seconds = 0) {
$datetime1 = date_create("@0");
$datetime2 = date_create("@$seconds");
$interval = date_diff($datetime1, $datetime2);
if ( $interval->y >= 1 ) $thetime[] = pluralize( $interval->y, 'year' );
if ( $interval->m >= 1 ) $thetime[] = pluralize( $interval->m, 'month' );
if ( $interval->d >= 1 ) $thetime[] = pluralize( $interval->d, 'day' );
if ( $interval->h >= 1 ) $thetime[] = pluralize( $interval->h, 'hour' );
if ( $interval->i >= 1 ) $thetime[] = pluralize( $interval->i, 'minute' );
if ( $interval->s >= 1 ) $thetime[] = pluralize( $interval->s, 'second' );
return isset($thetime) ? implode(' ', $thetime) . ($interval->invert ? ' ago' : '') : NULL;
}
function pluralize($count, $text) {
return $count . ($count == 1 ? " $text" : " ${text}s");
}
// Examples:
// -86400 = 1 day ago
// 12345 = 3 hours 25 minutes 45 seconds
// 987654321 = 31 years 3 months 18 days 4 hours 25 minutes 21 seconds
সম্পাদনা: আপনি যদি কম ভেরিয়েবল / স্পেস ব্যবহার করার জন্য উপরের উদাহরণটি ঘন করতে চান (স্বচ্ছতার ব্যয়ে), এখানে একটি বিকল্প সংস্করণ যা একই জিনিসটি করে:
function calctime($seconds = 0) {
$interval = date_diff(date_create("@0"),date_create("@$seconds"));
foreach (array('y'=>'year','m'=>'month','d'=>'day','h'=>'hour','i'=>'minute','s'=>'second') as $format=>$desc) {
if ($interval->$format >= 1) $thetime[] = $interval->$format . ($interval->$format == 1 ? " $desc" : " {$desc}s");
}
return isset($thetime) ? implode(' ', $thetime) . ($interval->invert ? ' ago' : '') : NULL;
}
$thetimeবিনিময়ে, যেমন,isset($thetime)
এখানে কয়েকটি কোড যা আমি দুটি তারিখের মধ্যে সময়কাল পাওয়ার উদ্দেশ্যে ব্যবহার করতে চাই। এটি দুটি তারিখ গ্রহণ করে এবং আপনাকে একটি সুন্দর বাক্য কাঠামোগত জবাব দেয়।
এটি এখানে পাওয়া কোডের কিছুটা পরিবর্তিত সংস্করণ ।
<?php
function dateDiff($time1, $time2, $precision = 6, $offset = false) {
// If not numeric then convert texts to unix timestamps
if (!is_int($time1)) {
$time1 = strtotime($time1);
}
if (!is_int($time2)) {
if (!$offset) {
$time2 = strtotime($time2);
}
else {
$time2 = strtotime($time2) - $offset;
}
}
// If time1 is bigger than time2
// Then swap time1 and time2
if ($time1 > $time2) {
$ttime = $time1;
$time1 = $time2;
$time2 = $ttime;
}
// Set up intervals and diffs arrays
$intervals = array(
'year',
'month',
'day',
'hour',
'minute',
'second'
);
$diffs = array();
// Loop thru all intervals
foreach($intervals as $interval) {
// Create temp time from time1 and interval
$ttime = strtotime('+1 ' . $interval, $time1);
// Set initial values
$add = 1;
$looped = 0;
// Loop until temp time is smaller than time2
while ($time2 >= $ttime) {
// Create new temp time from time1 and interval
$add++;
$ttime = strtotime("+" . $add . " " . $interval, $time1);
$looped++;
}
$time1 = strtotime("+" . $looped . " " . $interval, $time1);
$diffs[$interval] = $looped;
}
$count = 0;
$times = array();
// Loop thru all diffs
foreach($diffs as $interval => $value) {
// Break if we have needed precission
if ($count >= $precision) {
break;
}
// Add value and interval
// if value is bigger than 0
if ($value > 0) {
// Add s if value is not 1
if ($value != 1) {
$interval.= "s";
}
// Add value and interval to times array
$times[] = $value . " " . $interval;
$count++;
}
}
if (!empty($times)) {
// Return string with times
return implode(", ", $times);
}
else {
// Return 0 Seconds
}
return '0 Seconds';
}
সব এক সমাধানে। জিরো সহ কোনও ইউনিট দেয় না। আপনার নির্দিষ্ট সংখ্যক ইউনিট তৈরি করবে (ডিফল্টরূপে 3)। বেশ দীর্ঘ, সম্ভবত খুব মার্জিত না। সংজ্ঞাগুলি alচ্ছিক, তবে কোনও বড় প্রকল্পে এটি কার্যকর হতে পারে।
define('OneMonth', 2592000);
define('OneWeek', 604800);
define('OneDay', 86400);
define('OneHour', 3600);
define('OneMinute', 60);
function SecondsToTime($seconds, $num_units=3) {
$time_descr = array(
"months" => floor($seconds / OneMonth),
"weeks" => floor(($seconds%OneMonth) / OneWeek),
"days" => floor(($seconds%OneWeek) / OneDay),
"hours" => floor(($seconds%OneDay) / OneHour),
"mins" => floor(($seconds%OneHour) / OneMinute),
"secs" => floor($seconds%OneMinute),
);
$res = "";
$counter = 0;
foreach ($time_descr as $k => $v) {
if ($v) {
$res.=$v." ".$k;
$counter++;
if($counter>=$num_units)
break;
elseif($counter)
$res.=", ";
}
}
return $res;
}
নিচে ভোট দিতে নির্দ্বিধায়, কিন্তু আপনার কোড এ চেষ্টা নিশ্চিত হন। এটি কেবল আপনার যা প্রয়োজন তা হতে পারে।
কোনও সমাধান-ব্যতীত আমি (পিএইচপি শিখার সময় ফিরে এসেছি) এর সমাধানটি:
$days = (int)($uptime/86400); //1day = 86400seconds
$rdays = (uptime-($days*86400));
//seconds remaining after uptime was converted into days
$hours = (int)($rdays/3600);//1hour = 3600seconds,converting remaining seconds into hours
$rhours = ($rdays-($hours*3600));
//seconds remaining after $rdays was converted into hours
$minutes = (int)($rhours/60); // 1minute = 60seconds, converting remaining seconds into minutes
echo "$days:$hours:$minutes";
যদিও এটি একটি পুরানো প্রশ্ন ছিল, তবে নতুন শিক্ষাগত যারা এই জুড়ে আসে, তারা এই উত্তরটি দরকারী বলে মনে করতে পারে।
a=int(input("Enter your number by seconds "))
d=a//(24*3600) #Days
h=a//(60*60)%24 #hours
m=a//60%60 #minutes
s=a%60 #seconds
print("Days ",d,"hours ",h,"minutes ",m,"seconds ",s)
নেতিবাচক মান আসার পরে আমি এটির একটি কার্যকর কোড সম্পাদনা করছি। floor()মানটি নেতিবাচক হলে ফাংশন সঠিক গণনা দিচ্ছে না। সুতরাং আমাদের abs()এটি ফাংশনে ব্যবহারের আগে ফাংশনটি ব্যবহার করা দরকার floor()।
$inputSecondsচলক বর্তমান সময়ের স্ট্যাম্প এবং প্রয়োজনীয় তারিখের মধ্যে পার্থক্য হতে পারে।
/**
* Convert number of seconds into hours, minutes and seconds
* and return an array containing those values
*
* @param integer $inputSeconds Number of seconds to parse
* @return array
*/
function secondsToTime($inputSeconds) {
$secondsInAMinute = 60;
$secondsInAnHour = 60 * $secondsInAMinute;
$secondsInADay = 24 * $secondsInAnHour;
// extract days
$days = abs($inputSeconds / $secondsInADay);
$days = floor($days);
// extract hours
$hourSeconds = $inputSeconds % $secondsInADay;
$hours = abs($hourSeconds / $secondsInAnHour);
$hours = floor($hours);
// extract minutes
$minuteSeconds = $hourSeconds % $secondsInAnHour;
$minutes = abs($minuteSeconds / $secondsInAMinute);
$minutes = floor($minutes);
// extract the remaining seconds
$remainingSeconds = $minuteSeconds % $secondsInAMinute;
$seconds = abs($remainingSeconds);
$seconds = ceil($remainingSeconds);
// return the final array
$obj = array(
'd' => (int) $days,
'h' => (int) $hours,
'm' => (int) $minutes,
's' => (int) $seconds,
);
return $obj;
}
@ গ্লাভির উত্তরের একটি পার্থক্য - এটি সংক্ষিপ্ত ফলাফলের জন্য নেতৃস্থানীয় শূন্যগুলি লুকিয়ে রাখে এবং সঠিক জায়গায় বহুবচন ব্যবহার করে। এটি অপ্রয়োজনীয় নির্ভুলতাও সরিয়ে দেয় (উদাহরণস্বরূপ যদি সময়ের পার্থক্য 2 ঘন্টার বেশি হয় তবে আপনি সম্ভবত কত মিনিট বা সেকেন্ডের যত্ন করবেন না)।
function secondsToTime($seconds)
{
$dtF = new \DateTime('@0');
$dtT = new \DateTime("@$seconds");
$dateInterval = $dtF->diff($dtT);
$days_t = 'day';
$hours_t = 'hour';
$minutes_t = 'minute';
$seconds_t = 'second';
if ((int)$dateInterval->d > 1) {
$days_t = 'days';
}
if ((int)$dateInterval->h > 1) {
$hours_t = 'hours';
}
if ((int)$dateInterval->i > 1) {
$minutes_t = 'minutes';
}
if ((int)$dateInterval->s > 1) {
$seconds_t = 'seconds';
}
if ((int)$dateInterval->d > 0) {
if ((int)$dateInterval->d > 1 || (int)$dateInterval->h === 0) {
return $dateInterval->format("%a $days_t");
} else {
return $dateInterval->format("%a $days_t, %h $hours_t");
}
} else if ((int)$dateInterval->h > 0) {
if ((int)$dateInterval->h > 1 || (int)$dateInterval->i === 0) {
return $dateInterval->format("%h $hours_t");
} else {
return $dateInterval->format("%h $hours_t, %i $minutes_t");
}
} else if ((int)$dateInterval->i > 0) {
if ((int)$dateInterval->i > 1 || (int)$dateInterval->s === 0) {
return $dateInterval->format("%i $minutes_t");
} else {
return $dateInterval->format("%i $minutes_t, %s $seconds_t");
}
} else {
return $dateInterval->format("%s $seconds_t");
}
}
php > echo secondsToTime(60);
1 minute
php > echo secondsToTime(61);
1 minute, 1 second
php > echo secondsToTime(120);
2 minutes
php > echo secondsToTime(121);
2 minutes
php > echo secondsToTime(2000);
33 minutes
php > echo secondsToTime(4000);
1 hour, 6 minutes
php > echo secondsToTime(4001);
1 hour, 6 minutes
php > echo secondsToTime(40001);
11 hours
php > echo secondsToTime(400000);
4 days
foreach ($email as $temp => $value) {
$dat = strtotime($value['subscription_expiration']); //$value come from mysql database
//$email is an array from mysqli_query()
$date = strtotime(date('Y-m-d'));
$_SESSION['expiry'] = (((($dat - $date)/60)/60)/24)." Days Left";
//you will get the difference from current date in days.
}
$ মান ডাটাবেস থেকে আসে। এই কোডটি কোডইনিটারে রয়েছে। ESS SESSION ব্যবহারকারীর সাবস্ক্রিপশন সংরক্ষণ করার জন্য ব্যবহৃত হয়। এটা বাধ্যতামূলক. আমি এটি আমার ক্ষেত্রে ব্যবহার করেছি, আপনি যা চান তা ব্যবহার করতে পারেন।
$valueথেকে আসে? কেন আপনি একটি অধিবেশন প্রবর্তন করতে আগ্রহী? এটি কীভাবে সেকেন্ড, মিনিট এবং ঘন্টার জন্য সঠিক স্ট্রিংটি ফেরায়?
এটি আপনার প্রশ্নের সাথে সম্পর্কিত অন্যটি থেকে তারিখটি বাদ দেওয়ার জন্য আমি অতীতে ব্যবহৃত একটি ফাংশন, আমার প্রিন্সিপাল একটি পণ্যটির মেয়াদ শেষ না হওয়া অবধি কত দিন, ঘন্টা মিনিট এবং সেকেন্ড বাকি ছিল তা পান:
$expirationDate = strtotime("2015-01-12 20:08:23");
$toDay = strtotime(date('Y-m-d H:i:s'));
$difference = abs($toDay - $expirationDate);
$days = floor($difference / 86400);
$hours = floor(($difference - $days * 86400) / 3600);
$minutes = floor(($difference - $days * 86400 - $hours * 3600) / 60);
$seconds = floor($difference - $days * 86400 - $hours * 3600 - $minutes * 60);
echo "{$days} days {$hours} hours {$minutes} minutes {$seconds} seconds";