मैं एक चर को बदलना चाहता हूं $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 मिनट एस और 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-लाइन PHP फ़ंक्शन है जो बड़ी मात्रा में सेकंड के लिए महीनों की संख्या सहित एक मानव पठनीय स्ट्रिंग में कई सेकंड को परिवर्तित करता है:
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 दिखाता है। आप अपनी आवश्यकताओं के लिए परिणाम को विस्फोट कर सकते हैं और इसे ठीक कर सकते हैं।
$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];यह आपको साल और महीने का सुझाव भी देगा।
यहाँ कुछ बहुत अच्छे जवाब हैं, लेकिन उनमें से कोई भी मेरी जरूरतों को पूरा नहीं करता है। मैंने कुछ अतिरिक्त विशेषताओं को जोड़ने के लिए Glavic के उत्तर पर निर्माण किया, जिनकी मुझे आवश्यकता थी;
आप कोड का एक रनिंग संस्करण देख सकते हैं 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);
}
सबसे सरल तरीका एक तरीका बनाना होगा जो DateTime से एक DateInterval देता है :: वर्तमान समय से $ सेकंड में सापेक्ष समय का अंतर $ अब जो आप तब चेन और प्रारूप कर सकते हैं। उदाहरण के लिए:-
public function toDateInterval($seconds) {
return date_create('@' . (($now = time()) + $seconds))->diff(date_create('@' . $now));
}
अब अपने तरीके को DateInterval :: फॉर्मेट में कॉल करें
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);
}
}
अधिक मानवीय अनुकूल होने के पक्ष में कम कंप्यूटर पार्सिंग फ्रेंडली होने की कीमत पर, Glavić के उत्कृष्ट समाधान का एक विस्तारित संस्करण , पूर्णांक सत्यापन होने, 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/CakePHP-Interval
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
यहां कुछ कोड दिए गए हैं, जिनका उपयोग मैं दो तिथियों के बीच की अवधि प्राप्त करने के लिए करना चाहता हूं। यह दो तिथियों को स्वीकार करता है और आपको एक अच्छा वाक्य संरचित उत्तर देता है।
यह यहां पाए गए कोड का थोड़ा संशोधित संस्करण है ।
<?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 डिफ़ॉल्ट रूप से)। काफी लंबा, शायद बहुत सुरुचिपूर्ण नहीं। परिभाषित वैकल्पिक हैं, लेकिन एक बड़ी परियोजना में काम आ सकता है।
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";
हालांकि यह एक पुराना प्रश्न था, नए शिक्षार्थी जो इस पार आते हैं, उन्हें यह उत्तर उपयोगी लग सकता है।
नकारात्मक मूल्य आने पर मैं इसे अच्छी तरह से काम करने के लिए एक कोड का संपादन कर रहा हूं। 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;
}
@ Glavić के उत्तर पर एक भिन्नता - यह छोटे परिणामों के लिए अग्रणी शून्य छुपाता है और सही स्थानों पर बहुवचन का उपयोग करता है। यह अनावश्यक परिशुद्धता को भी हटा देता है (उदाहरण के लिए यदि समय का अंतर 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
मुझे नहीं पता कि इनमें से कुछ उत्तर हास्यास्पद या लंबे क्यों हैं। यहाँ DateTime Class का उपयोग कर एक है । रेडजर्सग के उत्तर के समान। यह केवल आवश्यक इकाइयों को प्रदर्शित करेगा, और नकारात्मक समय में 'पहले' प्रत्यय होगा ...
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)
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.
}
$ मूल्य डेटाबेस से आते हैं। यह कोड Codeigniter में है। $ 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";