1. 程式人生 > >獲取當天的0點0分0秒的日期和23點59分59秒的日期

獲取當天的0點0分0秒的日期和23點59分59秒的日期

方法一:也是推薦使用的方法
//可以定義一個函式,函式的引數有小時、分、秒、相比今天的日期,今天就輸入0,明天輸入1,昨天輸入-1,以此類推
//(毫秒是可選引數,可以輸入也可以不輸入,毫秒的取值範圍是0到999)
private Date getNeedTime(int hour,int minute,int second,int addDay,int ...args){
    Calendar calendar = Calendar.getInstance();
    if(addDay != 0){
        calendar.add(Calendar.DATE,addDay);
    }
    calendar.set(Calendar.HOUR_OF_DAY
,hour); calendar.set(Calendar.MINUTE,minute); calendar.set(Calendar.SECOND,second); if(args.length==1){ calendar.set(Calendar.MILLISECOND,args[0]); } return calendar.getTime(); }
//下面用一個測試方法來測試一下上一個方法是否可行
@Test
public void testGetNeedTime(){
    Date start = getNeedTime(0,0,0,0
); Date end = getNeedTime(23,59,59,0); Date now = new Date(); if(now.getTime() >= start.getTime() && now.getTime() <= end.getTime()){ System.out.println("當前時間在中間"); } System.out.println(start); System.out.println(end); }

//輸出結果如下:
當前時間在中間
Tue Dec 27 00:00:00 CST 2016
Tue Dec 27 23:59:59 CST 2016
//如果想得到明天的0點0分0秒的時間和23點59分59秒的時間,只需要將日期加1就可以了
@Test
public void testGetNeedTime(){
    Date start = getNeedTime(0,0,0,1);
    Date end = getNeedTime(23,59,59,1);
    Date now = new Date();
    if(now.getTime() >= start.getTime() && now.getTime() <= end.getTime()){
        System.out.println("當前時間在中間");
    }
    System.out.println(start);
    System.out.println(end);
}

//執行結果如下:
Wed Dec 28 00:00:00 CST 2016
Wed Dec 28 23:59:59 CST 2016
//如果想得到昨天的0點0分0秒的時間和23點59分59秒的時間,只需要將日期加-1就可以了
@Test
public void test4(){
    Date start = getNeedTime(0,0,0,-1);
    Date end = getNeedTime(23,59,59,-1);
    Date now = new Date();
    if(now.getTime() >= start.getTime() && now.getTime() <= end.getTime()){
        System.out.println("當前時間在中間");
    }
    System.out.println(start);
    System.out.println(end);
}

//執行結果如下:
Mon Dec 26 00:00:00 CST 2016
Mon Dec 26 23:59:59 CST 2016
方法二:獲取當天的0點0分0秒的時間和23點59分59秒的時間
@Test
public void test(){
    Date time = new Date();
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    String timeStr = format.format(time);
    SimpleDateFormat transfer = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date start = null;
    Date end = null;
    try {
        start = transfer.parse(timeStr+" 00:00:00");
        end = transfer.parse(timeStr+" 23:59:59");
    } catch (ParseException e) {

    }
    if(start.getTime()<= time.getTime() && end.getTime() >= time.getTime()){
       System.out.println("在中間");
    }
    System.out.println(start);
    System.out.println(end);
}
//執行結果如下所示:
當前時間在中間
Tue Dec 27 00:00:00 CST 2016
Tue Dec 27 23:59:59 CST 2016