Marko,

Your code is wrong...
$date->toString("mm") returns 03
BUT
$date->toString("ss") reeturns 188...

You really have to call toArray() and then use the array keys for minute and second to get the proper values when you only want to have seperated values.

Greetings
Thomas Weidner, I18N Team Leader, Zend Framework
http://www.thomasweidner.com

----- Original Message ----- From: "Marko Korhonen" <[email protected]>
To: <[email protected]>
Sent: Wednesday, June 24, 2009 12:06 PM
Subject: Re: [fw-general] Zend_Measure and time



Thanks Thomas,

So I ended up with view helper "Duration".

class My_View_Helper_Duration extends Zend_View_Helper_Abstract
{
   /**
    * Get duration in minutes and seconds
    *
    * @param int $seconds Seconds
    * @return string Duration
    */
public function duration($seconds)
   {
       $seconds = Zend_Filter::get($seconds, "Int");

$date = new Zend_Date($seconds, Zend_Date::SECOND);

return $this->view->translate("duration-%d-%d", $date->toString("mm"),
$date->toString("ss"));
   }
}

Where I get string "4 min 12 s" for example.


br, Marko


thomasW wrote:

Marko,

I list YouTube videos with Zend_Gdata_Youtube.

From youtube I get duration in seconds.

I made conversion with Zend_Measure with following code:

// example: duration 188s
$input = new Zend_Measure_Time($videoEntry->getVideoDuration(),
Zend_Measure_Time::SECOND);

// example outputs 3.13min which is correct: 188/60=3.13
echo $input->convertTo('MINUTE');

BUT, should it make 3 min 8 s kinda string? Now I have no use for this
conversion
and I propably end up making view helper converting seconds to
minutes+seconds.

I just wanted to ask if anybody knows better way or something about
Zend_Measure that I have missed.

Zend_Measure handles measurements.

First you have seconds, but what you expect is to get 2 measurements
returned.
Seconds and Minutes... from Zend_Measures point of view the returned value
is correct.
You wanted to have minutes and written in minutes the result is a float.

But you want to get a time value and not one measurement.
So, when you want to have date calculations then you should use Zend_Date.

In this case the simplest way is to call:

$date = Zend_Date(188, Zend_Date:SECONDS);
$date->toArray();
or
$date->toString('mm.ss');

Greetings
Thomas Weidner, I18N Team Leader, Zend Framework
http://www.thomasweidner.com




--
View this message in context: http://www.nabble.com/Zend_Measure-and-time-tp24167528p24181990.html Sent from the Zend Framework mailing list archive at Nabble.com.

Reply via email to