随心所欲格式化时间
前几天写代码需要将DateTime格式化为日月年的显示方式,DataTime提供了一个ToString的重载方法: public string ToString(IFormatProvider provider)
参数provider表示它提供区域性特定的格式设置信息,DateTimeFormatInfo 类实现了IFormatProvider 接口,所以我们可以使用DateTimeFormatInfo 的对象进行格式化时间。
下面是一个对时间进行格式化的方法,该方法有三个参数:第一个是要格式的DateTime类型的实例.第二个参数format 表示要格式的显示方式,比如年月日、月日年或者日月年,现在只接受StrFormat枚举类型。第三个参数表示日期中的分隔符。
参数provider表示它提供区域性特定的格式设置信息,DateTimeFormatInfo 类实现了IFormatProvider 接口,所以我们可以使用DateTimeFormatInfo 的对象进行格式化时间。
下面是一个对时间进行格式化的方法,该方法有三个参数:第一个是要格式的DateTime类型的实例.第二个参数format 表示要格式的显示方式,比如年月日、月日年或者日月年,现在只接受StrFormat枚举类型。第三个参数表示日期中的分隔符。
enum StrFormat
{
YMD,MDY,DMY
}
private static string ConvertStrDateTimeToString(DateTime date, StrFormat format, string seperator)
{
System.Globalization.DateTimeFormatInfo dateFormat = new System.Globalization.DateTimeFormatInfo();
switch (format)
{
case StrFormat.YMD:
dateFormat.ShortDatePattern = "yyyy/MM/dd";
break;
case StrFormat.MDY:
dateFormat.ShortDatePattern = "MM/dd/yyyy";
break;
case StrFormat.DMY:
dateFormat.ShortDatePattern = "dd/MM/yyyy";
break;
default:
break;
}
dateFormat.DateSeparator = seperator;
return date.ToString(dateFormat);
}
下面的Main方法可以测试上面的代码
{
YMD,MDY,DMY
}
private static string ConvertStrDateTimeToString(DateTime date, StrFormat format, string seperator)
{
System.Globalization.DateTimeFormatInfo dateFormat = new System.Globalization.DateTimeFormatInfo();
switch (format)
{
case StrFormat.YMD:
dateFormat.ShortDatePattern = "yyyy/MM/dd";
break;
case StrFormat.MDY:
dateFormat.ShortDatePattern = "MM/dd/yyyy";
break;
case StrFormat.DMY:
dateFormat.ShortDatePattern = "dd/MM/yyyy";
break;
default:
break;
}
dateFormat.DateSeparator = seperator;
return date.ToString(dateFormat);
}
public static void Main()
{
DateTime date = DateTime.Now;
string strDate = ConvertStrDateTimeToString(date, StrFormat.DMY, "-");
Console.WriteLine(strDate);
Console.Read();
}
{
DateTime date = DateTime.Now;
string strDate = ConvertStrDateTimeToString(date, StrFormat.DMY, "-");
Console.WriteLine(strDate);
Console.Read();
}