我可以使用SimpleDateFormat四季度和半年的格式模式吗?
2007-01-23 expected output `Q1 2007`
2007-01-23 expected output `H1 2007`
答案 0 :(得分:4)
不,就我所知,没有类似的东西。我不会过去不同公司对“Q1”和“H1”的不同想法开始,说实话 - 例如“Q1在3月开始的最后一周结束时”。
你必须编写自己的代码才能做到这一点。
编辑:查看Java 8 java.time.DateTimeFormatter
文档,看起来它支持宿舍但不支持一半。
答案 1 :(得分:1)
正如@Jon Skeet所说,Java8添加了一个名为DateTimeFormatter
的新类。通过使用此课程,您可以像这样格式化日期:
DateTimeFormatter QUARTER_FORMAT = DateTimeFormatter.ofPattern("'Q'q yyyy");
DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(DATE_FORMAT.parse("2007-01-23").toInstant().atZone(ZoneId.systemDefault()).format(QUARTER_FORMAT));
但是如果你想使用这个类格式化Timestamp
it will throw UnsupportedOperationException.
这适合Timestamp
。
DateTimeFormatter QUARTER_FORMAT = DateTimeFormatter.ofPattern("'Q'q yyyy");
System.out.println(new Date((DATE_FORMAT_JA.parse("2018/01/01 13:01:01:011")).getTime()).toInstant().atZone(ZoneId.systemDefault()).toLocalDate().format(QUARTER_FORMAT));
DateTimeFormatter
不支持半年。