我在教自己的Java和我正在研究這個應用程序,將數到聖誕節的日子。今天和聖誕節的GregorianCalendar
和Date
對象的HOUR_OF_DAY
,MONTH
和SECOND
值都設置爲零。通過調試,我可以看到變化的天數以毫秒爲單位的差異,它給了我一個1641599724毫秒的時間,即18.99999天,但無論我嘗試什麼,它都不會達到19。天到聖誕節應用程序Java值將不會收起
我試圖Math.ceil方法,試圖圍捕,但我不能讓它等於19
FIRST:DataUtils類存儲/修改從用戶
package chapter13datesstrings;
import java.util.*;
public class DateUtils {
static final int MILLS_IN_DAY = 24 * 60 * 60 * 1000;
public static Date getCurrentDate(){
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.set(Calendar.HOUR_OF_DAY, 0);
currentDate.set(Calendar.MINUTE, 0);
currentDate.set(Calendar.SECOND, 0);
return currentDate.getTime();
}
public static Date createDate(int year, int month, int day){
GregorianCalendar date = new GregorianCalendar(year, month, day);
return date.getTime();
}
public static Date stripTime(Date date){
GregorianCalendar noTimeDate = new GregorianCalendar();
noTimeDate.setTime(date);
noTimeDate.set(Calendar.HOUR, 0);
noTimeDate.set(Calendar.MINUTE,0);
noTimeDate.set(Calendar.SECOND, 0);
return noTimeDate.getTime();
}
public static double daysDiff(Date date1, Date date2){
date1 = stripTime(date1);
date2 = stripTime(date2);
long longDate1 = date1.getTime();
long longDate2 = date2.getTime();
long longDiff = longDate2 - longDate1;
return (int) (Math.ceil(longDiff/MILLS_IN_DAY));
}
}
輸入
SECOND:DateUtilExample類提供輸入到DataUtils類
package chapter13datesstrings;
import java.util.*;
import java.text.*;
public class DateUtilExample {
public void thisIsCode(){
GregorianCalendar currentGC = new GregorianCalendar();
int currentYear = currentGC.get(Calendar.YEAR); //sets current year
Date currentDate = DateUtils.getCurrentDate(); //create current date object
Date christmas = DateUtils.createDate(currentYear, Calendar.DECEMBER, 25); //set christmas date
int daysToChristmas = DateUtils.daysDiff(currentDate, christmas); // days until christmas
DateFormat date = DateFormat.getDateInstance(Calendar.LONG);
String formattedToday = date.format(currentDate);
/**** Output Items *****/
System.out.println("Today is " + formattedToday);
System.out.println("Number of Days 'Till Xmas: " + daysToChristmas + " days");
}
}
主要方法類
package chapter13datesstrings;
import java.util.Date;
import java.text.DateFormat;
public class Chapter13DatesStrings {
public static void theDates(){
DateUtilExample dateUtilExample = new DateUtilExample();
dateUtilExample.thisIsCode();
}
public static void main(String[] args) {
theDates();
}
}
僅供參考,雖然我理解你正在練習學習Java,你也應該知道,在現實世界中的Java。 util.Date/。日曆班應該避免,因爲它們很麻煩,容易混淆,並且有缺陷。對於實際工作,請使用[Joda-Time](http://www.joda.org/joda-time/)庫或java.time。 Joda-Time 2.6中的代碼示例:'DateTimeZone zone = DateTimeZone.forID(「America/Montreal」); DateTime now = DateTime.now(zone); DateTime then = new DateTime(2014,12,25,0,0,0,zone); int daysUntilXmas = Days.daysBetween(now,then).getDays();' – 2014-12-07 03:32:34