Java格式化Date为字符串的高级写法

简介:

    本文使用printf来进行格式化日期,不仅不需要创建DateFormat实例,又可以简化代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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);
}

如果参数超过一个,那就必须在 % 后面指定参数的索引,并以 $ 终止。

还可以使用 < 标志, 这样就不用使用索引来指定位置了。

是不是很方便呢?

目录
相关文章
|
25天前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
99 60
|
15天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
36 6
|
1月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
50 15
|
1月前
|
Java
JAVA易错点详解(数据类型转换、字符串与运算符)
JAVA易错点详解(数据类型转换、字符串与运算符)
50 4
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
52 3
|
2月前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
18 2
|
2月前
|
安全 Java API
时间日期API(Date,SimpleDateFormat,Calendar)+java8新增日期API (LocalTime,LocalDate,LocalDateTime)
这篇文章介绍了Java中处理日期和时间的API,包括旧的日期API(Date、SimpleDateFormat、Calendar)和Java 8引入的新日期API(LocalTime、LocalDate、LocalDateTime)。文章详细解释了这些类/接口的方法和用途,并通过代码示例展示了如何使用它们。此外,还讨论了新旧API的区别,新API的不可变性和线程安全性,以及它们提供的操作日期时间的灵活性和简洁性。
|
1月前
|
Java
Java的Date类使用
Java的Date类使用
22 0
|
6月前
|
存储 XML 缓存
Java字符串内幕:String、StringBuffer和StringBuilder的奥秘
Java字符串内幕:String、StringBuffer和StringBuilder的奥秘
69 0
|
3月前
|
安全 Java API
【Java字符串操作秘籍】StringBuffer与StringBuilder的终极对决!
【8月更文挑战第25天】在Java中处理字符串时,经常需要修改字符串,但由于`String`对象的不可变性,频繁修改会导致内存浪费和性能下降。为此,Java提供了`StringBuffer`和`StringBuilder`两个类来操作可变字符串序列。`StringBuffer`是线程安全的,适用于多线程环境,但性能略低;`StringBuilder`非线程安全,但在单线程环境中性能更优。两者基本用法相似,通过`append`等方法构建和修改字符串。
65 1
下一篇
无影云桌面