/// <summary>
/// 将日期转化成指定格式,24制。YYYY: 年;MM:月;DD:日;HH:小时;mm:分钟;SS:秒;MS:毫秒。
/// </summary>
/// <param name="format"></param>
/// <returns></returns>
public static string ToString(DateTime dt, string format)
{
string year = dt.Year.ToString();
string month = dt.Month.ToString("00");
string monthSmall = dt.Month.ToString();
string day = dt.Day.ToString("00");
string daySmall = dt.Day.ToString();
string hour = dt.Hour.ToString("00");
string hourSmall = dt.Hour.ToString();
string minute = dt.Minute.ToString("00");
string minuteSmall = dt.Minute.ToString();
string second = dt.Second.ToString("00");
string secondSmall = dt.Second.ToString();
string millisecond = dt.Millisecond.ToString();
string value = format.Replace("YYYY", year);
//,StringComparison.CurrentCulture
if (value.IndexOf("MM") >= 0)
{
value = value.Replace("MM", month);
}
else
{
//防止替换M,使MS无效。
StringBuilder sb = new StringBuilder();
for (int i = 0; i < value.Length; i++)
{
if (value[i] == 'M')
{
if (i + 1 < value.Length && value[i + 1] != 'S')
{
sb.Append(monthSmall);
}
else
{
sb.Append(value[i]);
}
}
else
{
sb.Append(value[i]);
}
}
value = sb.ToString();
}
if (value.IndexOf("DD") >= 0)
{
value = value.Replace("DD", day);
}
else if (value.IndexOf("D") >= 0)
{
value = value.Replace("D", daySmall);
}
if (value.IndexOf("HH") >= 0)
{
value = value.Replace("HH", hour);
}
else if (value.IndexOf("H") >= 0)
{
value = value.Replace("H", hourSmall);
}
if (value.IndexOf("mm") >= 0)
{
value = value.Replace("mm", minute);
}
else if (value.IndexOf("m") >= 0)
{
value = value.Replace("m", minuteSmall);
}
if (value.IndexOf("SS") >= 0)
{
value = value.Replace("SS", second);
}
else
{
//防止替换S,使MS无效。
StringBuilder sb = new StringBuilder();
for (int i = 0; i < value.Length; i++)
{
if (value[i] == 'S')
{
if (i - 1 >= 0 && value[i - 1] != 'M')
{
sb.Append(secondSmall);
}
else
{
sb.Append(value[i]);
}
}
else
{
sb.Append( value[i]);
}
}
value = sb.ToString();
}
if (value.IndexOf("MS") >= 0)
{
value = value.Replace("MS", millisecond);
}
return value;
}
浙公网安备 33010602011771号