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