SimpleDateFormat设置解析日期的当前日期

时间:2016-12-23 13:45:33

标签: java date simpledateformat

有没有办法使用以下simpleDateFormat:

final SimpleDateFormat simpleDateFormatHour = new SimpleDateFormat("HH:mm:ss z");

并在调用时:

simpleDateFormat.parse("12:32:21 JST");

返回Date对象的当前日期?

对于这些示例,它将返回:

Thu Jan 01 05:32:21 EET 1970

而不是:

<<today>> 05:32:21 EET <<currentYear>> 

我需要。

4 个答案:

答案 0 :(得分:2)

不,SimpleDateFormat需要明确输入字符串中的日期。如果您使用的是Java 8,则可以使用LocalDateTime

LocalDateTime localDateTime = LocalDate.now().atTime(5, 32, 21);

如果您想要包含时区,可以使用ZonedDateTime

答案 1 :(得分:1)

构建另一个<div class="outer-box"> <ul id="periods"></ul> </div>以打印今天的日期:

SimpleDateFormat

(请注意:您可能希望在String today = new SimpleDateFormat("yyyy/MM/dd").print(new Date()); 上设置时区,因为“今天”在不同的时区有所不同。)

更新日期格式以包含年,月和日:

SimpleDateFormat

然后在日期字符串前面加上您想要的日期:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss z");

答案 2 :(得分:1)

使用灵活默认值(今天而非1970-01-01)的更好解决方案将在 Java-8 中,新的内置日期时间库位于包{{1 }}:

java.time

但是,我仍然看到一个小错误,该错误与此代码在解析真实区域之前对使用区域做出硬连线假设这一事实因此请小心处理。请记住,当前日期取决于区域。但也许您只需要处理用户使用日本时间的情况。

提示:您还可以分两步解析。第一步是使用任何类型的固定默认日期,以获取要解析的文本的区域信息。然后,您可以将此区域信息用于上面的建议解决方案。一个尴尬但安全的程序。

答案 3 :(得分:0)

如果您只想更改年份和日期,可以使用此代码

final SimpleDateFormat simpleDateFormatHour = new SimpleDateFormat("HH:mm:ss z");
Date date = simpleDateFormatHour.parse("12:32:21 JST");
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.YEAR, Calendar.getInstance().get(Calendar.YEAR));
calendar.set(Calendar.DAY_OF_YEAR, Calendar.getInstance().get(Calendar.DAY_OF_YEAR));
date = calendar.getTime();