时间的字符串形式与毫秒形式相互转换的类。
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