...

View Full Version : Resolved datetime difference caluculation for caluculatin SLA in time

nani_nisha06
11-05-2012, 01:45 PM
HI All,

As subject line says,

from the below I could successfully calculate days in to hours, time but I am able to calculate getting in to Minutes using below code.

//to claculate SLA
\$datetime1=\$date1; //first date
\$datetime2=\$date2; //second date

define("SECONDS_PER_HOUR", 24*60*60);
// Calculate timestamp
\$start = strtotime(\$datetime1);
\$stop = strtotime(\$datetime2);
// Diferences
\$difference = \$stop - \$start;
// Hours
\$hours = round(\$difference / SECONDS_PER_HOUR, 0, PHP_ROUND_HALF_DOWN);
\$hourmul=(\$hours*24);

// Minutes
\$minutes = (\$difference/ SECONDS_PER_HOUR);
\$minmul= round((\$minutes/60));
// Seconds
\$seconds = (\$difference % SECONDS_PER_HOUR) / 60;
\$secmul= round((\$seconds/60));
\$var= \$hourmul. ":" .\$minmul. ":" .\$secmul;

Start date = 05-11-2012 23:15:00
end date= 06-11-2012 01:15:00

output should be 2:00:00 of time.

can any one help me ???

Regards,
nani

Fou-Lu
11-05-2012, 02:36 PM
Why not just use a DateInterval:

date_default_timezone_set('UTC');

\$dts = new DateTime('05-11-2012 23:15:00');
\$dte = new DateTime('06-11-2012 01:15:00');

\$di = \$dte->diff(\$dts, true);
print \$di->format('%H:%I:%S');

The object properties can be inspected as well to see what to show. If its <> 0, then its different in some way shape or form, so you can tack on things like years and months systematically this way.

nani_nisha06
11-05-2012, 02:53 PM
Why not just use a DateInterval:

date_default_timezone_set('UTC');

\$dts = new DateTime('05-11-2012 23:15:00');
\$dte = new DateTime('06-11-2012 01:15:00');

\$di = \$dte->diff(\$dts, true);
print \$di->format('%H:%I:%S');

The object properties can be inspected as well to see what to show. If its <> 0, then its different in some way shape or form, so you can tack on things like years and months systematically this way.

Thanks Fou-Lu,

This was a very simple logic but I was writing all different though of mine which took this all time.....need be more smart & sharp thinker from the next case....

even I have tried above code my self twice but was doing silly mistake make me open this ticket...

Thanks for you help...

Regards,
Nani