时间格式转换类(一)

2015-01-25 11:40:30 · 作者: · 浏览: 9
??

时间格式转换类

时间的字符串形式与毫秒形式相互转换的类。

using System;
namespace myspace
{
	/// 
	/// 指定若干常数,表示计时格式。
	/// 
	public enum TimingFormat : byte
	{
		/// 
		/// 毫秒。
		/// 
		Ms,

		/// 
		/// 秒
		/// 
		S,

		/// 
		/// 分
		/// 
		M,

		/// 
		/// 时
		/// 
		H,

		/// 
		/// 秒 毫妙
		/// 
		S_Ms,

		/// 
		/// 分 秒
		/// 
		M_S,

		/// 
		/// 时 分
		/// 
		H_M,

		/// 
		/// 分 秒 毫秒
		/// 
		M_S_Ms,

		/// 
		/// 时 分 秒
		/// 
		H_M_S,

		/// 
		/// 时 分 秒 毫秒
		/// 
		H_M_S_Ms
	}

	/// 
	/// 时间的字符串形式与毫秒形式相互转换类。
	/// 
	public static class TimeFormat
	{
		#region 将毫秒形式的时间转化为字符串形式
		/// 
		/// 将毫秒形式的时间转化为字符串形式(00:00:00.000)的某部分或全部。
		/// 
		/// 毫秒数。
		/// 时间的某部分
		/// 
  
   时间的字符串形式。
  
		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 将字符串形式的时间转化为毫秒形式
		/// 
/// 将字符串形式(00:00:00.000)的某部分或全部转化为毫秒形式的时间。 ///
/// 时间的字符串形式。 /// 字符串的格式。 /// 时间的毫秒形式。 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) + ToTim