我需要今天的日期 - 零其他任何东西("05/06/08 00:00:00")
我试过了
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR, 0);
Date date1 = calendar.getTime();
System.out.println(date1);
Run Code Online (Sandbox Code Playgroud)
运行:(这严重搞砸了)
如果计算机上的小时是中午12:00:太阳3月08日00:44:39 IST 2009
如果计算机上的小时在中午> 12:00:太阳3月08日12:46:53 IST 2009
所以我放弃了.
所有Date的setter都被弃用了(纪元时间除外) - 所以我也不想使用它们
我唯一能想到的是
Calendar calendar = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
String sDate = dateFormat.format(calendar.getTime());
Date today = dateFormat.parse(sDate);
Run Code Online (Sandbox Code Playgroud)
但这是一个蹩脚的代码我无法自己写出来.
还有其他选择吗?
谢谢!
Dam*_*amo 25
我用这个:
public static Date startOfDay(Date date) {
Calendar dCal = Calendar.getInstance();
dCal.setTime(date);
dCal.set(Calendar.HOUR_OF_DAY, 0);
dCal.set(Calendar.MINUTE, 0);
dCal.set(Calendar.SECOND, 0);
dCal.set(Calendar.MILLISECOND, 0);
return dCal.getTime();
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 18
我对Java日期/时间问题的标准建议:不要使用java.util.{Calendar,Date}.使用Joda时间.这样,您可以将日期表示为日期(没有关联的时区),而不是日期/时间.或者您可以使用DateMidnightif,这是您想要表示的.(注意时区和日期的组合,那里是没有午夜虽然...)
你需要使用Date什么?如果你可以随时改变使用Joda,那就太好了.否则,您可以使用Joda来执行您想要的操作,然后java.util.Date在需要时转换为毫秒(然后转换为).
(Michael的解决方案在使用Date/时Calendar很好,如果你真的想要坚持一个破碎的API ......但我不能夸大Joda是多么好......)
Osc*_*Ryz 10
您应该使用HOUR_OF_DAY而不是HOUR,并将其与MINUTE和SECOND结合使用.
import java.util.Calendar;
import static java.util.Calendar.HOUR_OF_DAY;
import static java.util.Calendar.MINUTE;
import static java.util.Calendar.SECOND;
import static java.util.Calendar.MILLISECOND;
public class Today {
public static void main( String [] args ) {
Calendar cal = Calendar.getInstance();
cal.set( HOUR_OF_DAY, 0 );
cal.set( MINUTE, 0 );
cal.set( SECOND, 0 );
cal.set( MILLISECOND, 0 );
System.out.println( cal.getTime() );
}
}
Run Code Online (Sandbox Code Playgroud)
您获得的结果是由于HOUR用于AM/PM而HOUR_OF_DAY是24小时.
HOUR_OF_DAY:
获取和设置的字段编号,表示一天中的小时.HOUR_OF_DAY用于24小时制.例如,在下午10:04:15.250,HOUR_OF_DAY是22.
小时:
get和set的字段编号表示上午或下午的小时.小时用于12小时制(0 - 11).中午和午夜由0表示,而不是由12表示.例如,在10:04:15.250 PM,HOUR为10.
时间组件不仅仅是几小时(正如您所注意到的那样,Calendar.HOUR是AM/PM).您需要将所有时间字段设置为0:HOUR_OF_DAY,MINUTE,SECOND,MILLISECOND.