时间的字符串形式与毫秒形式相互转换的类。
using System; namespace myspace { /// <summary> /// 指定若干常数,表示计时格式。 /// </summary> public enum TimingFormat : byte { /// <summary> /// 毫秒。 /// </summary> Ms, /// <summary> /// 秒 /// </summary> S, /// <summary> /// 分 /// </summary> M, /// <summary> /// 时 /// </summary> H, /// <summary> /// 秒 毫妙 /// </summary> S_Ms, /// <summary> /// 分 秒 /// </summary> M_S, /// <summary> /// 时 分 /// </summary> H_M, /// <summary> /// 分 秒 毫秒 /// </summary> M_S_Ms, /// <summary> /// 时 分 秒 /// </summary> H_M_S, /// <summary> /// 时 分 秒 毫秒 /// </summary> H_M_S_Ms } /// <summary> /// 时间的字符串形式与毫秒形式相互转换类。 /// </summary> public static class TimeFormat { #region 将毫秒形式的时间转化为字符串形式 /// <summary> /// 将毫秒形式的时间转化为字符串形式(00:00:00.000)的某部分或全部。 /// </summary> /// <param name="milliseconds">毫秒数。</param> /// <param name="format">时间的某部分</param> /// <returns>时间的字符串形式。</returns> public static string ToTimeString(ulong milliseconds, TimingFormat format) { ulong ms = milliseconds % 1000; ulong s = milliseconds / 1000; ulong h = s / 3600; ulong m = (s - (h * 3600)) / 60; s = s - (h * 3600 + m * 60); switch (format) { case TimingFormat.Ms: return string.Format("{0:D3}", ms); case TimingFormat.S: return string.Format("{0:D2}", s); case TimingFormat.M: return string.Format("{0:D2}", m); case TimingFormat.H: return string.Format("{0:D2}", h); case TimingFormat.S_Ms: return string.Format("{0:D2}.{1:D3}", s, ms); case TimingFormat.M_S: return string.Format("{0:D2}:{1:D2}", m, s); case TimingFormat.H_M: return string.Format("{0:D2}:{1:D2}", h, m); case TimingFormat.M_S_Ms: return string.Format("{0:D2}:{1:D2}.{2:D3}", m, s, ms); case TimingFormat.H_M_S: return string.Format("{0:D2}:{1:D2}:{2:D2}", h, m, s); default: return string.Format("{0:D2}:{1:D2}:{2:D2}.{3:D3}", h, m, s, ms); } } #endregion #region 将字符串形式的时间转化为毫秒形式 /// <summary> /// 将字符串形式(00:00:00.000)的某部分或全部转化为毫秒形式的时间。 /// </summary> /// <param name="timeStr">时间的字符串形式。</param> /// <param name="format">字符串的格式。</param> /// <returns>时间的毫秒形式。</returns> public static ulong ToTimeULong(string timeStr, TimingFormat format) { timeStr = timeStr.Trim(); switch (format) { case TimingFormat.H: return Convert.ToUInt64(timeStr) * 3600 * 1000; case TimingFormat.M: return Convert.ToUInt64(timeStr) * 60 * 1000; case TimingFormat.S: return Convert.ToUInt64(timeStr) * 1000; case TimingFormat.Ms: return Convert.ToUInt64(timeStr); case TimingFormat.S_Ms: string[] sms = timeStr.Split('.'); return ToTimeULong(sms[0], TimingFormat.S) + ToTimeULong(sms[1], TimingFormat.Ms); case TimingFormat.M_S: string[] ms = timeStr.Split(':'); return ToTimeULong(ms[0], TimingFormat.M) + ToTimeULong(ms[1], TimingFormat.S); case TimingFormat.H_M: string[] hm = timeStr.Split(':'); return ToTimeULong(hm[0], TimingFormat.H) + ToTimeULong(hm[1], TimingFormat.M); case TimingFormat.M_S_Ms: string[] msms = timeStr.Split(':'); return ToTimeULong(msms[0], TimingFormat.M) + ToTimeULong(msms[1], TimingFormat.S_Ms); case TimingFormat.H_M_S: string[] hms = timeStr.Split(':'); return ToTimeULong(hms[0], TimingFormat.H) + ToTimeULong(hms[1], TimingFormat.M) + ToTimeULong(hms[2], TimingFormat.S); default: string[] hmsms = timeStr.Split(':'); return ToTimeULong(hmsms[0], TimingFormat.H) + ToTimeULong(hmsms[1], TimingFormat.M) + ToTimeULong(hmsms[2], TimingFormat.S_Ms); } } #endregion } }
原文地址:http://blog.csdn.net/liujian619/article/details/41828915