我需要在 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() 将年、月和日手动设置到
、todaysTime
中setMonth()
和 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/