/***************************************************** * * Copyright 2009 Akamai Technologies, Inc. All Rights Reserved. * ***************************************************** * The contents of this file are subject to the Mozilla Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * * The Initial Developer of the Original Code is Akamai Technologies, Inc. * Portions created by Akamai Technologies, Inc. are Copyright (C) 2009 Akamai * Technologies, Inc. All Rights Reserved. * *****************************************************/ package org.osmf.utils { [ExcludeClass] /** * @private * * Class that contains static utility methods for manipulating and working * with time values. * * @langversion 3.0 * @playerversion Flash 10 * @playerversion AIR 1.5 * @productversion OSMF 1.0 */ public class TimeUtil { /** * Takes a time as a string and returns that time in seconds. *

* The following time values are supported:

* Note: Offset times without units (for example 10) are assumed to be seconds. * * @langversion 3.0 * @playerversion Flash 10 * @playerversion AIR 1.5 * @productversion OSMF 1.0 */ public static function parseTime(value:String):Number { var time:Number = 0; var a:Array = value.split(":"); if (a.length > 1) { // Clock format, e.g. "hh:mm:ss" time = a[0] * 3600; time += a[1] * 60; time += Number(a[2]); } else { // Offset time format, e.g. "1h", "8m", "10s" var mul:int = 0; switch (value.charAt(value.length-1)) { case 'h': mul = 3600; break; case 'm': mul = 60; break; case 's': mul = 1; break; } if (mul) { time = Number(value.substr(0, value.length-1)) * mul; } else { time = Number(value); } } return time; } /** * Takes time in seconds and returns a string in a time code * format of hh:mm:ss. If hours are not present, returns only * mm:ss. For example, passing a value of 18750 will * return 05:12:30, but passing a value of 31 * will return 00:31. So in other words, minutes and seconds * will always be present. * * @langversion 3.0 * @playerversion Flash 10 * @playerversion AIR 1.5 * @productversion OSMF 1.0 */ public static function formatAsTimeCode(sec:Number):String { var h:Number = Math.floor(sec / 3600); h = isNaN(h) ? 0 : h; var m:Number = Math.floor((sec % 3600) / 60); m = isNaN(m) ? 0 : m; var s:Number = Math.floor((sec % 3600) % 60); s = isNaN(s) ? 0 : s; return (h == 0 ? "" : (h < 10 ? "0" + h.toString() + ":" : h.toString() + ":")) + (m < 10 ? "0" + m.toString() : m.toString()) + ":" + (s < 10 ? "0" + s.toString() : s.toString()); } } }