本文使用printf
来进行格式化日期,不仅不需要创建DateFormat实例,又可以简化代码。
12345678910111213141516171819202122232425262728293031323334353637383940414243 |
private static void testDate() { System.out.printf("%tc\n",new Date()); // Wed Jan 13 18:51:28 CST 2016 (完整的日期和时间) /** 经常使用 **/ System.out.printf("%tF\n",new Date()); // 2016-01-13 (ISO 8061日期) System.out.printf("%tD\n",new Date()); // 01/13/16 (美国格式的日期) /** 经常使用 **/ System.out.printf("%tT\n",new Date()); // 18:51:28 (24小时时间) System.out.printf("%tr\n",new Date()); // 06:51:28 PM (12小时时间) System.out.printf("%tR\n",new Date()); // 18:51 (24小时时间没有秒) System.out.printf("%tY\n",new Date()); // 2016 (4位数字的年(前面补0)) System.out.printf("%ty\n",new Date()); // 16 (年的后两位数字(前面补0)) System.out.printf("%tC\n",new Date()); // 20 (年的前两位数字(前面补0)) System.out.printf("%tb\n",new Date()); // Jan (月的缩写) System.out.printf("%tB\n",new Date()); System.out.printf("%tm\n",new Date()); // 01 (两位数字的月(前面补0)) System.out.printf("%td\n",new Date()); // 13 (两位数字的日(前面补0)) System.out.printf("%te\n",new Date()); // 13 (两位数字的日(前面不补0)) System.out.printf("%tA\n",new Date()); // Wednesday (星期几的完整拼写) System.out.printf("%ta\n",new Date()); // Wed (星期几的缩写) System.out.printf("%tj\n",new Date()); // 013 (三位数的年中的日子(前面补0),在001到366之间) System.out.printf("%tH\n",new Date()); // 18 (两位数字的小时(前面补0),在0到23之间) System.out.printf("%tk\n",new Date()); // 18 (两位数字的小时(前面不补0)在0到23之间) System.out.printf("%tI\n",new Date()); // 06 (两位数字的小时(前面补0),在0到12之间) System.out.printf("%tl\n",new Date()); // 6 (两位数字的小时(前面不补0),在0到12之间) System.out.printf("%tM\n",new Date()); // 51 (两位数字的分钟(前面补0)) System.out.printf("%tS\n",new Date()); // 28 (两位数字的秒(前面补0)) System.out.printf("%tL\n",new Date()); // 886 (三位数字的毫秒(前面补0)) System.out.printf("%tN\n",new Date()); // 886000000 (九位数字的毫微秒(前面补0)) System.out.printf("%tp\n",new Date()); // pm (上午或者下午的小写标志)// System.out.printf("%tP\n",new Date());//此方法报错 应该和时区有关系 System.out.printf("%tz\n",new Date()); // +0800 (从GMT起,RFC822数字移位) System.out.printf("%tZ\n",new Date()); // CST (时区) System.out.printf("%ts\n",new Date()); // 1452682288 (从格林威治时间1970-01-01 00:00:00起的秒数) System.out.printf("%tQ\n",new Date()); // 1452682288886 (从格林威治时间1970-01-01 00:00:01起的毫秒数) /** 高级输出时间格式 **/ String fullDate = String.format("%1$s%2$tY-%2$tm-%2$td %2$tT", "Due Date: ", new Date()); //Due Date: 2016-01-13 16:45:21 String fullDate2 = String.format("%s%tY-%<tm-%<td %<tT", "Due Date: ", new Date()); //Due Date: 2016-01-13 16:45:21 String fullDate3 = String.format("%s%tF %<tT", "Due Date: ", new Date()); //Due Date: 2016-01-13 16:45:21 System.out.println(fullDate); System.out.println(fullDate2); System.out.println(fullDate3); } |
如果参数超过一个,那就必须在 % 后面指定参数的索引,并以 $ 终止。
还可以使用 < 标志, 这样就不用使用索引来指定位置了。
是不是很方便呢?
时间: 2024-08-03 11:47:31