java - 将时间解析为日历而不丢失日期部分

标签 java parsing datetime

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

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

例如:

String time = "23:32";
String timeFmt = new SimpleDateFormat("HH:mm");
Calendar todaysTime = new GregorianCalendar();

todaysTime.setTime(timeFmt.parse(time));
System.out.println(todaysTime.getTime());

打印:1970 年 1 月 1 日星期四 11:32:00 CST 我期望的是:Wed 03 11:32:00 CST 2015

我只能看到一种替代方案:使用今天的日期创建第二个 GregorianCalendar,然后通过 setYear() 将年、月和日手动设置到 todaysTimesetMonth()setDayOfMonth() 但我希望有一种更优雅的方法来做到这一点。

你能帮我寻找一种更好的方法来解析解析为 Date 对象的时间部分而不丢失日期部分吗?

最佳答案

你可以这样做:

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 ) );

关于java - 将时间解析为日历而不丢失日期部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30636017/

相关文章:

java - 转换为日期

python - 使用 Python 进行更快的解析

java - 静态属性访问PHP中的静态属性

java - 解析回复电子邮件以仅获取最新部分

java - 如何显示转动大像素图过程的指示器?

java.sql.SQLRecoverableException : Io error: Invalid number format for port number in ubuntu 错误

JAVA RMI,定义离线方法,所以当方法调用时不会去服务器

python - 仅选择在特定时间发生的行

XMLTimeToDateTime 忽略毫秒

mysql - 如何覆盖所有时间属性