C# 格式化字符串

  在C#程序开发中,我们会经常需要获得某种格式化的字符串,比如:颜色值#FF00FF,货币¥2.00,日期2012-03-14等等。在C#中格式化字符串,一般会用到String.Format()和.ToString()两个函数。
  1.已知颜色的RGB值,获取颜色的字符串格式#FF00FF。

        //#ff0ff
String color1 = String.Format("#{0:x}{1:x}{2:x}", 255, 0, 255);
//#FF0FF
String color2 = String.Format("#{0:X}{1:X}{2:X}", 255, 0, 255);
//#FF00FF
String color3 = String.Format("#{0:X2}{1:X2}{2:X2}", 255, 0, 255);

  说明:x,X则表示将数字格式化为16进制,x,X的大小写决定了格式化后的字符串中的字母的大小写,而{0:X2}中的2则表示格式化后16进制不足两位作补零处理。
  与此类似的还有如下几种格式。
  C  货币      string.Format("{0:C}", 2)    //¥2.00
  D  十进制     string.Format("{0:D3}", 2)   //002
  E  科学计数法   12345.ToString("E")        //1.234500e+004
  F  浮点数     12345.ToString("F4")        //12345.0000
  P  百分数     string.Format("{0:P}",  0.1) //10.00%
  G  常规      string.Format("{0:G}",  2)   //2
  N  用分号隔开的数字string.Format("{0:N}",  250000)//250,000.00

  2.日期时间的格式化。
  DateTime.Now.ToString("yyyyMMddHHmmssffff");//201203112159166970
  格式模式 说明
  y 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。
  yy 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。
  yyyy 包括纪元的四位数的年份。
  M 月份数字。一位数的月份没有前导零。
  MM 月份数字。一位数的月份有一个前导零。
  MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义。
  MMMM 月份的完整名称,在 MonthNames 中定义。
  d 月中的某一天。一位数的日期没有前导零。
  dd 月中的某一天。一位数的日期有一个前导零。
  ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。
  dddd 周中某天的完整名称,在 DayNames 中定义。  
  h 12 小时制的小时。一位数的小时数没有前导零。
  hh 12 小时制的小时。一位数的小时数有前导零。
  H 24 小时制的小时。一位数的小时数没有前导零。
  HH 24 小时制的小时。一位数的小时数有前导零。
  m 分钟。一位数的分钟数没有前导零。
  mm 分钟。一位数的分钟数有一个前导零。
  s 秒。一位数的秒数没有前导零。
  ss 秒。一位数的秒数有一个前导零。
  f 秒的小数精度为一位。其余数字被截断。
  ff 秒的小数精度为两位。其余数字被截断。
  fff 秒的小数精度为三位。其余数字被截断。
  ffff 秒的小数精度为四位。其余数字被截断。
  fffff 秒的小数精度为五位。其余数字被截断。
  ffffff 秒的小数精度为六位。其余数字被截断。
  fffffff 秒的小数精度为七位。其余数字被截断。

原文地址:https://www.cnblogs.com/huizhang212/p/StringFormat.html