我正在使用Java和 我正在尝试下面的代码
Calendar cal1 = Calendar.getInstance();
cal.setTime(now1);
cal1.add(Calendar.DAY_OF_YEAR, -1);
java.util.Date yesterday = (Date) cal1.getTime();
System.out.println(yesterday.toString());
java.sql.Timestamp yesterdayTimestamp = new java.sql.Timestamp(tomorrow.getTime());
System.out.println(yesterdayTimestamp.toString());
我的输出为Tue Dec 28 17:36:28 IST 2010
现在我想将时间设置为00:00:00
Tue Dec 28 17:36:28 IST 2010
将为Tue Dec 28 00:00:00 IST 2010
我不知道怎么做?
答案 0 :(得分:5)
如果我已正确理解问题,您需要将与时间相关的字段设置为0。
Calendar cal1 = Calendar.getInstance();
cal1.set(Calendar.HOUR_OF_DAY, 0);
cal1.set(Calendar.MINUTE, 0);
cal1.set(Calendar.SECOND, 0);
cal1.set(Calendar.MILLISECOND, 0);
System.out.println(cal1.getTime());
<强>输出强>
Wed Dec 29 00:00:00 IST 2010
答案 1 :(得分:3)
您需要设置时间组件的各个元素。
http://download.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html#set(int,int)
cal1.set(Calendar.HOUR_OF_DAY, 0);
cal1.set(Calendar.MINUTE, 0);
cal1.set(Calendar.SECOND, 0);
答案 2 :(得分:1)
如果你只需要日期,而不是时间,你应该使用java.sql.Date。
答案 3 :(得分:1)
在您的日历中,您可以将相应字段设置为0:cal.set(Calendar.HOUR_OF_DAY, 0)
。
或者,您可以使用joda-time,其DateMidnight
类用于此目的。
顺便提一下,如评论中所述 - 使用格式化程序。例如SimpleDateFormat
。您不应该依赖于对象的toString()
表示。