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

时间:2016-06-09 07:25:46

标签: 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);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);

请提出一些解决方案。 提前谢谢。

3 个答案:

答案 0 :(得分:1)

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

date.toInstant().truncatedTo(ChronoUnit.DAYS)

这会给你正确的时刻。您可以使用Date.from(Instant)工厂方法轻松将其转换回Date实例。

答案 1 :(得分:1)

你的行

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

跑步时给我

  

Thu Jun 09 00:00:00 NZST 2016

答案 2 :(得分: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);

这应该可行我还没有测试过。

有关详情,请访问http://www.java2s.com/Code/JavaAPI/java.util/Calendarsetintfieldintvalue.htm