日期格式化

格式化字符串的方法:《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 } }

日期类型的格式化和文件大小的格式化

相关文章: