将时间分解为日历而不会丢失日期部分

时间:2015-06-04 05:58:07

标签: java parsing datetime

我需要在Calendar Java对象中存储由今天的日期组成的日期/时间加上从HH:mm:ss格式的字符串解析的时间。

我尝试创建新的GregorianCalendar并使用setTime()初始化它,结果是调用SimpleDateFormat的parse()方法但后来我注意到{{} 1}}返回一个parse()对象,其中包含正确的解析时间,但日期为1970年1月1日。

例如:

Date

打印:String time = "23:32"; String timeFmt = new SimpleDateFormat("HH:mm"); Calendar todaysTime = new GregorianCalendar(); todaysTime.setTime(timeFmt.parse(time)); System.out.println(todaysTime.getTime()); 我的期望是:Thu Jan 01 11:32:00 CST 1970

我只能看到一个替代方案:使用今天日期创建第二个Wed 03 11:32:00 CST 2015,然后通过GregorianCalendartodaysTime手动将年,月和日设置为setYear() setMonth()但我希望有一种更优雅的方式来做到这一点。

你能帮我找一个更好的方法来解析解析成setDayOfMonth()对象的时间部分而不会丢失日期部分吗?

1 个答案:

答案 0 :(得分:1)

您可以这样做:

Date parsedDate = SimpleDateFormat.getInstance().parse(time);
Calendar instance = Calendar.getInstance();
instance.setTime( parsedDate );

Calendar result = Calendar.getInstance();
result.set( Calendar.HOUR_OF_DAY, instance.get( Calendar.HOUR_OF_DAY ) );
result.set( Calendar.MINUTE, instance.get( Calendar.MINUTE ) );