java.time
马克Jeronimus说了。我再充实一点。只需将要打印的文本放在单引号内即可。
DateTimeFormatter yearFormatter = DateTimeFormatter.ofPattern("yyyy 'year'");
System.out.println(LocalDate.of(2010, Month.FEBRUARY, 3).format(yearFormatter));
System.out.println(Year.of(2010).format(yearFormatter));
System.out.println(ZonedDateTime.now(ZoneId.of("Europe/Vilnius")).format(yearFormatter));
刚运行时的输出:
2010 year
2010 year
2019 year
如果使用aDateTimeFormatterBuilder
及其appendPattern
方法,请以相同的方式使用单引号。或改用其appendLiteral
方法,并且不要使用单引号。
那么,如何将单引号放在格式中呢?两个单引号会产生一个。双引号是否在单引号内无关紧要:
DateTimeFormatter formatterWithSingleQuote = DateTimeFormatter.ofPattern("H mm'' ss\"");
System.out.println(LocalTime.now(ZoneId.of("Europe/London")).format(formatterWithSingleQuote));
10 28'34“
DateTimeFormatter formatterWithSingleQuoteInsideSingleQuotes
= DateTimeFormatter.ofPattern("hh 'o''clock' a, zzzz", Locale.ENGLISH);
System.out.println(ZonedDateTime.now(ZoneId.of("America/Los_Angeles"))
.format(formatterWithSingleQuoteInsideSingleQuotes));
太平洋夏令时间凌晨2点
上面所有的格式化程序也可以用于解析。例如:
LocalTime time = LocalTime.parse("16 43' 56\"", formatterWithSingleQuote);
System.out.println(time);
16:43:56
SimpleDateFormat
近十年前,当问这个问题时所使用的课程非常麻烦,而且已经过时了。我建议您改用Java.time(现代的Java日期和时间API)。这就是为什么我要证明这一点。
链接
SimpleDateFormat
在几个答案中使用的课程都非常麻烦且已过时。避开它。取而代之的是使用Mark Jeronimus的简短答案,该答案演示了Java.time(现代Java日期和时间API)的使用。