日期格式化
格式化字符串的方法:《String.Format()》
日期格式化的参考:《标准日期和时间格式字符串》
日期类型的格式化中,长格式与短格式指操作系统的区域选项的格式设置。
date formatting
Date formats are very dependant on the culture information passed. The examples below are shown using the UK culture.
specifier type output
(June 8, 1970 12:30:59)d Short Date 08/06/1970 D Long Date 08 June 1970 t Short Time 12:30 T Long Time 12:30:59 f Full date and time 08 June 1970 12:30 F Full date and time (long) 08 June 1970 12:30:59 g Default date and time 08/06/1970 12:30 G Default date and time (long) 08/06/1970 12:30:59 M Day / Month 8 June r RFC1123 date string Mon, 08 Jun 1970 12:30:59 GMT s Sortable date/time 1970-06-08T12:30:59 u Universal time, local timezone 1970-06-08 12:30:59Z Y Month / Year June 1970 custom date formatting
specifier type output
(June 8, 1970 12:30:59)dd Day 08 ddd Short Day Name Mon dddd Full Day Name Monday hh 2 digit hour 12 HH 2 digit hour (24 hour) 12 mm 2 digit minute 30 MM Month 06 MMM Short Month name Jun MMMM Month name June ss seconds 59 tt AM/PM PM yy 2 digit year 70 yyyy 4 digit year 1970 : seperator, e.g. {0:hh:mm:ss} 12:30:59 / seperator, e.g. {0:dd/MM/yyyy} 08/06/1970
文件大小格式化
写了3个扩展方法,用来将long类型格式化成1024为权的字节表示法。
使用方法:
long size=10000000000;
string r1=size.FormatFileSize();
string r2=size.FormatFileSize(MyExtendMethod.FormatFileSizeUnit.KB);
string r3=size.FormatFileSizeWithoutUnit(MyExtendMethod.FormatFileSizeUnit.KB);
结果分别为:
r1: "9 GB"
r2: "9,765,625 KB"
r3: "9,765,625"
源码和演示
using System; class Test { static void Main() { TestDateTimeFormat(); TestFormatFileSize(); } static void TestDateTimeFormat() { DateTimeOffset now= DateTimeOffset.Now; //DateTimeOffset Console.WriteLine("{0}",now.DateTime); //DateTime Console.WriteLine("{0}",now); Console.WriteLine("{0}: {1:d}","d",now); Console.WriteLine("{0}: {1:D}","D",now); Console.WriteLine("{0}: {1:t}","t",now); Console.WriteLine("{0}: {1:T}","T",now); Console.WriteLine("{0}: {1:f}","f",now); Console.WriteLine("{0}: {1:F}","F",now); Console.WriteLine("{0}: {1:g}","g",now); Console.WriteLine("{0}: {1:G}","G",now); Console.WriteLine("{0}: {1:M}","M",now); Console.WriteLine("{0}: {1:r}","r",now); Console.WriteLine("{0}: {1:s}","s",now); Console.WriteLine("{0}: {1:u}","u",now); Console.WriteLine("{0}: {1:Y}","Y",now); Console.WriteLine(); } static void TestFormatFileSize() { long[] l={1012,1012101,1012101210,101210121012,1012101210121012}; for(int i=0;i<l.Length;i++) Console.WriteLine(l[i].FormatFileSize()); Console.WriteLine(); long m=10000000000; Console.WriteLine(m.FormatFileSize(MyExtendMethod.FormatFileSizeUnit.Bytes)); Console.WriteLine(m.FormatFileSize(MyExtendMethod.FormatFileSizeUnit.KB)); Console.WriteLine(m.FormatFileSize(MyExtendMethod.FormatFileSizeUnit.MB)); Console.WriteLine(m.FormatFileSize(MyExtendMethod.FormatFileSizeUnit.GB)); Console.WriteLine(m.FormatFileSize(MyExtendMethod.FormatFileSizeUnit.TB)); Console.WriteLine(); } } //扩展方法 public static class MyExtendMethod { /// <summary> /// 将文件大小格式化为指定单位的字符串(结果不带单位符号) /// </summary> /// <param name="size"></param> /// <param name="unit"></param> /// <returns></returns> public static string FormatFileSizeWithoutUnit(this long size, FormatFileSizeUnit unit) { string result; switch (unit) { case FormatFileSizeUnit.KB: { double d = size / 1024f; result = string.Format("{0:#,##0.##}", d > 1 ? d : 1); } break; case FormatFileSizeUnit.MB: { double d = size / 1048576f; result = string.Format("{0:#,##0.##}", d > 1 ? d : 1); } break; case FormatFileSizeUnit.GB: { double d = size / 1073741824f; result = string.Format("{0:#,##0.##}", d > 1 ? d : 1); } break; case FormatFileSizeUnit.TB: { double d = size / 1099511627776f; result = string.Format("{0:#,##0.##}", d > 1 ? d : 1); } break; case FormatFileSizeUnit.Bytes: default: result = string.Format("{0:#,##0}", size); break; } return result; } /// <summary> /// 将文件大小格式化为指定单位的字符串 /// </summary> /// <param name="size"></param> /// <param name="unit"></param> /// <returns></returns> public static string FormatFileSize(this long size, FormatFileSizeUnit unit) { string result = FormatFileSizeWithoutUnit(size, unit); switch (unit) { case FormatFileSizeUnit.KB: result += " KB"; break; case FormatFileSizeUnit.MB: result += " MB"; break; case FormatFileSizeUnit.GB: result += " GB"; break; case FormatFileSizeUnit.TB: result += " TB"; break; case FormatFileSizeUnit.Bytes: default: result += " 字节"; break; } return result; } /// <summary> /// 将文件大小自动格式化为字符串 /// </summary> /// <param name="size"></param> /// <returns></returns> public static string FormatFileSize(this long size) { if (size < 1024) return FormatFileSize(size, FormatFileSizeUnit.Bytes); if (size < 1048576) return FormatFileSize(size, FormatFileSizeUnit.KB); if (size < 1073741824) return FormatFileSize(size, FormatFileSizeUnit.MB); if (size < 1099511627776) return FormatFileSize(size, FormatFileSizeUnit.GB); return FormatFileSize(size, FormatFileSizeUnit.TB); } public enum FormatFileSizeUnit { Bytes = 0, KB, MB, GB, TB } }