+ 1 @trevor и справочные таблицы
это более гибкое решение, просто остерегайтесь не смешивать килограммы и расстояния:)
особый случай - это преобразования времени, в которых вы можете использоватьвстроенный объект Date:
// how much is 3775 seconds?
var date:Date = new Date( null, null, null, null, null, 3775 );
// 1h 2min 55s
trace( date.hours, date.minutes, date.seconds )
это удобно, потому что он управляет особыми случаями, связанными с количеством дней в месяце: 28,29,30 или 31.
, которые вы все еще можете использоватьМетод Тревора для ручной установки соответствий (1H = 3600 с, 1 мин = 60 с, 1 мс = 0,001 с и т. д.), например, приведенный ниже код создает «таблицу» соответствия между расстояниями (пример @ trevor) и временем;использование расстояний прямое, но использование времени более сложно:
package
{
import flash.display.Sprite;
public class Converter extends Sprite
{
private var MILLIMETER:Number = .001;
private var CENTIMETER:Number = .01;
private var DECIMETER:Number = .1;
private var METER:Number = 1;
private var FOOT:Number = 0.3048;
private var YARD:Number = 0.9144;
private var INCH:Number = 0.0254001;
private var MILLISECOND:Number = SECOND * 0.001;
private var SECOND:Number = 1;
private var MINUTE:Number = 60 * SECOND;
private var HOUR:Number = 60 * MINUTE;
private var DAY:Number = 24 * HOUR;
private var MONTH:Number = 30 * DAY;
private var YEAR:Number = 12 * MONTH;
public function Converter()
{
var seconds:Number = 10215464578;
var date:Date = new Date( null, null, null, null, null, seconds );
trace( date.fullYear, date.month, date.day, date.hours, date.minutes, date.seconds )
//does the same as
var ye:Number = convertUnits( seconds, SECOND, YEAR, true );
var mo:Number = convertUnits( seconds, SECOND, MONTH, true ) % ( YEAR / MONTH );
var d:Number = convertUnits( seconds, SECOND, DAY, true ) % ( MONTH / DAY );
var h:Number = convertUnits( seconds, SECOND, HOUR, true ) % ( DAY / HOUR );
var mi:Number = convertUnits( seconds, SECOND, MINUTE, true ) % ( MINUTE );
var s:Number = seconds % MINUTE;
trace( ye, mo, d, h, mi, s );
}
private function convertUnits( amount:Number, unitFrom:Number, unitTo:Number, floor:Boolean = false ):Number
{
var val:Number = ( unitFrom / unitTo ) * amount;
return floor ? int( val ) : val;
}
}
}
в течение 3775 секунд это даст:
1899 11 0 1 2 55
00 0 1 2 55
и за 10215464578 секунд
2223 8 4 13 2 58
328 5 4 13 2 58
это означает, что конвертер не учитывает сам календарь, он вычисляет количество времени (месяц = 30 дней, что не соответствует действительности).