使用java将时间值设置为00:00:00的方法是什么

使用java将时间值设置为00:00:00的方法是什么,java,Java,我需要将时间值更改为0。 我的输入格式为:2016-07-30T06:00:00:000Z 预期结果:2016-07-30 00:00:00 我尝试了一些代码,但它不起作用 final Calendar calendar = Calendar.getInstance(); calendar.setTimeZone(timezone); calendar.setTime(date); calendar.set(Calendar.0);

我需要将时间值更改为0。 我的输入格式为:2016-07-30T06:00:00:000Z 预期结果:2016-07-30 00:00:00 我尝试了一些代码,但它不起作用

final Calendar calendar = Calendar.getInstance();
        calendar.setTimeZone(timezone);
        calendar.setTime(date);
        calendar.set(Calendar.0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
请提出一些解决方案。
提前感谢。

下面是一个如何使用日历的示例

  String months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug",
    "Sep", "Oct", "Nov", "Dec" };

Calendar calendar = Calendar.getInstance();

System.out.print("Date: ");
System.out.print(months[calendar.get(Calendar.MONTH)]);
System.out.print(" " + calendar.get(Calendar.DATE) + " ");
System.out.println(calendar.get(Calendar.YEAR));

System.out.print("Time: ");
System.out.print(calendar.get(Calendar.HOUR) + ":");
System.out.print(calendar.get(Calendar.MINUTE) + ":");
System.out.println(calendar.get(Calendar.SECOND));

calendar.set(Calendar.HOUR, 10);
calendar.set(Calendar.MINUTE, 29);
calendar.set(Calendar.SECOND, 22);

System.out.print("Updated time: ");
System.out.print(calendar.get(Calendar.HOUR) + ":");
System.out.print(calendar.get(Calendar.MINUTE) + ":");
System.out.println(calendar.get(Calendar.SECOND));
 }
}
所以我希望你能摆脱这个

 calendar.setTimeZone(timezone);
 calendar.setTime(date);
 calendar.set(Calendar.0);
并将您的一些代码更改为

calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
这应该行得通,我还没测试过


有关更多信息,请转到此处

如果您使用的是Java 8,则可以使用新的日期和时间库:

date.toInstant().truncatedTo(ChronoUnit.DAYS)
这会给你一个合适的时机。您可以使用
Date.from(Instant)
factory方法轻松地将其转换回日期实例。

您的行

calendar.set(Calendar.0); 
这就是问题所在

人们常常错误地这样做

calendar.set(Calendar.HOUR, 0); 
这失败了,而

 calendar.set(Calendar.HOUR_OF_DAY, 0); 
这是正确的方法吗

e、 g.该代码有效

Date date = new Date();
final Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
Date zeroedDate = calendar.getTime();  
System.out.println(zeroedDate);
当跑步给我力量的时候

2016年6月9日星期四00:00:00新西兰时间


Calendar.0
似乎是错误的。定义不工作可能重复FYI,非常麻烦的日期时间类,例如,和
java.text.simpleDataFormat
现在被java 8和更高版本中内置的类所取代。明白了。说得好,这是个容易落入的陷阱!不过要注意时区,你的本地时区将为零小时……使用小时常数对PM时间不起作用,应使用HOUR_of_DAY,正如@RuanMalans在其答案中指出的那样。好的一点是,我忘记了HOUR_of_DAY。此答案中的代码仅适用于UTC中一天的第一个时刻。如果希望在另一个时区开始一天,请使用
date.toInstant().atZone(yourZoneIdHere.toLocalDate().atStartOfDay(yourZoneIdHere)