class Program { static void Main(string[] args) { //DateTime dt = DateTime.Now; //Console.WriteLine("{0}", dt);//2014-3-27 10:19:24 原来形式 //Console.WriteLine("{0:d}", dt);//2014-3-27 "d":约束的结果,以短时间输出 //Console.WriteLine("{0:D}", dt);//2014年3月27日星期四 "D":长日期格式 //Console.WriteLine("{0:f}", dt);//2014年3月27日星期四 10:24 "f":完整日期/时间模式(短时间) //Console.WriteLine("{0:F}", dt);//2014年3月27日星期四 10:25:13 "F":完整日期/时间模式(长时间) //Console.WriteLine("{0:g}", dt);//2014-3-27 10:26 "g":常规日期/时间模式(短时间)。 //Console.WriteLine("{0:G}", dt);//2014-3-27 10:26:41 "G":常规日期/时间模式(长时间) //Console.WriteLine("{0:m}", dt);//3月27日 "m":月/日模式。 //Console.WriteLine("{0:M}", dt);//3月27日 "M":月/日模式。 //Console.WriteLine("{0:o}", dt);//2014-03-27T10:29:17.4531250+08:00 "o": 往返日期/时间模式。 //Console.WriteLine("{0:O}", dt);//2014-03-27T10:29:17.4531250+08:00 "O": 往返日期/时间模式。 //Console.WriteLine("{0:r}", dt);//Thu, 27 Mar 2014 10:30:27 GMT "r":RFC1123 模式。 //Console.WriteLine("{0:R}", dt);//Thu, 27 Mar 2014 10:30:27 GMT "R":RFC1123 模式。 //Console.WriteLine("{0:s}", dt);//2014-03-27T10:31:46 "s";可排序日期/时间模式。 //Console.WriteLine("{0:t}", dt);//10:36 "t":短时间模式 //Console.WriteLine("{0:T}", dt);//10:37:40 "T":短时间模式 //Console.WriteLine("{0:u}", dt);//2014-03-27 10:38:53Z "u";通用可排序日期/时间模式。 //Console.WriteLine("{0:U}", dt);//2014年3月27日星期四 02:39:30 "U":通用完整日期/时间模式 //Console.WriteLine("{0:y}", dt);//2014年3月 "y":年月模式 //Console.WriteLine("{0:Y}", dt);//2014年3月 "y":年月模式 //日期和时间自定义模式 //http://msdn.microsoft.com/zh-cn/library/8kb3ddd4%28v=vs.110%29.aspx //数值标准模式 //http://msdn.microsoft.com/zh-cn/library/dwhawy9k%28v=vs.110%29.aspx //数值自定义模式 //http://msdn.microsoft.com/zh-cn/library/0c899ak8%28v=vs.110%29.aspx double test = 1234.5678; Console.WriteLine("{0:####}", test);//1235 这是4舍5入了 Console.WriteLine("{0:######.#####}", test);//1234.5678 //Console.Read(); } } /* * 格式化的动作用到部分方法: * toString()的重载;String.Format();Console.WriteLine();等。 * * 复合格式(串): * 我的理解是对字符串的约束和限制,它的实质也是一个字符串。和参数列表配合能很好地约束一个字符串。 * 组成部分:固定文本和格式项。 * 举例1: * int intCc = 90; * Console.WriteLine("name={0}",intCc); * 其中"name={0}"是一个复合格式串,"name="是固定文本,"{0}"是格式项。 * 重点不是固定文本,而是格式项。 * 格式项: * { index[,alignment][:formatString]} ; * 组成:索引,对齐,格式字符串。 * 索引:对应index,是参数列表中的第几个参数。index为0,说明对应第一个参数。是从0开始的整数。 * 对齐:对应aliginment,是表示对齐方式的。是一个整数,可以是正的或者负的。对齐值是对目标字符串留下的长度,小于长度时取字符串的长度,大于长度时把字符串放到对齐值表示的长度中。 * 格式字符串:对应FormatString,是一些格式说明,不同的数据类型有不同的使用语法。是格式项中的重点。实质是字符串。 * * 示例1: * 正常输出对应项,索引的使用。 * int intCc = 80; int intDd = 90; Console.WriteLine("name={0},sex={1}", intCc,intDd);//结果是name=80,sex=90 * 示例2: * 索引超出范围怎么办? * int intCc = 80; int intDd = 90; Console.WriteLine("name={0},sex={2}", intCc,intDd);//未处理的异常: System.FormatException: 索引(从零开始)必须大于或等于零,且小于参 数列表的大小。 * 示例3: * 对齐的使用。 * string strTmp = "abcdefg"; Console.WriteLine("{0,6}"+";",strTmp);//右对齐,对齐值6小于字符串长度7, Console.WriteLine("{0,8}"+";", strTmp);//右对齐,对齐值8大于字符串长度7 Console.WriteLine("{0,-6}"+";", strTmp);//左对齐,对齐值6小于字符串长度7 Console.WriteLine("{0,-8}"+";", strTmp);//左对齐,对齐值8大于字符串长度7 * * 结果: * ;abcdefg; ; abcdefg; ;abcdefg; ;abcdefg ; * 格式字符串的使用:分类有,DateTime类型,数据类型,枚举类型,Guid类型,TimeSpan类型。 * DateTime类型: * 示例4: