public static string FormatTime(float time, TIMEFORMAT format, bool richText)
        {
            if (double.IsInfinity(time) || double.IsNaN(time))
            {
                return("Inf");
            }

            string ret = "";

            try
            {
                List <string> units = new List <string>();
                switch (format)
                {
                case TIMEFORMAT.LONG_IDENTIFIER:
                    if (richText)
                    {
                        units.AddRange(new string[] { " <b>years</b>, ", " <b>days</b>, ", " <b>hours</b>, ", " <b>minutes</b>, ", " <b>seconds</b>" });
                    }
                    else
                    {
                        units.AddRange(new string[] { " years, ", " days, ", " hours, ", " minutes, ", " seconds" });
                    }
                    break;

                case TIMEFORMAT.SHORT_IDENTIFIER:
                    if (richText)
                    {
                        units.AddRange(new string[] { "<b>y</b> ", "<b>d</b> ", "<b>h</b> ", "<b>m</b> ", "<b>s</b>" });
                    }
                    else
                    {
                        units.AddRange(new string[] { "y ", "d ", "h ", "m ", "s" });
                    }
                    break;

                default:
                    units.AddRange(new string[] { ":", ":", ":", ":", ":" });
                    break;
                }
                List <float> intervals = new List <float>();
                intervals.AddRange(new float[] { DaysPerYear *HoursPerDay * 3600, HoursPerDay * 3600, 3600, 60, 1 });

                for (int i = 0; i < units.Count; i++)
                {
                    int amount = Mathf.FloorToInt(time / intervals[i]);
                    if (amount > 0)
                    {
                        ret  += string.Format("{0}{1}", amount, units[i]);
                        time -= amount * intervals[i];
                    }
                }
            }
            catch (Exception)
            {
                return("NaN");
            }
            return(ret);
        }
示例#2
0
        public static string TimeToStr(int t, TIMEFORMAT fmt)
        {
            if (t == -1)
            {
                switch (fmt)
                {
                case UClass.TIMEFORMAT.TIMEFMT_HMS:
                    return("-:--:--");

                    break;

                case UClass.TIMEFORMAT.TIMEFMT_HM:
                    return("-:--");

                    break;

                case UClass.TIMEFORMAT.TIMEFMT_MS:
                    return("-:--");

                    break;

                case UClass.TIMEFORMAT.TIMEFMT_S:
                    return("-");

                    break;
                }
            }
            else
            {
                TimeSpan ts = TimeSpan.FromSeconds(t);
                switch (fmt)
                {
                case UClass.TIMEFORMAT.TIMEFMT_HMS:
                    return(string.Format("{0:D}:{1:D2}:{2:D2}", ts.Hours, ts.Minutes, ts.Seconds));

                    break;

                case UClass.TIMEFORMAT.TIMEFMT_HM:
                    return(string.Format("{0:D}:{1:D2}", ts.Hours, ts.Minutes));

                    break;

                case UClass.TIMEFORMAT.TIMEFMT_MS:
                    return(string.Format("{0:D}:{1:D2}", ts.Minutes, ts.Seconds));

                    break;

                case UClass.TIMEFORMAT.TIMEFMT_S:
                    return(t.ToString());

                    break;
                }
            }
            return("-");
        }