作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我应该询问用户的年龄,作为返回,我应该检查他们已经活了多少天。我尝试过在这里搜索,但不太明白该怎么做。
条件:采用 GregorianCalendar 日期作为参数并返回该日期与今天之间的天数差异的方法。 我不能为此使用任何外部类。
这是我未完成的代码:
public static void main(String[] args) {
int day;
int month;
int year;
int difference;
Scanner scanIn = new Scanner(System.in);
System.out.println("Please enter your birth date.");
System.out.println("Please enter the month you were born in (mm)");
month = scanIn.nextInt();
System.out.println("Please enter the day you were born in (dd)");
day = scanIn.nextInt();
System.out.println("Please enter the year you were born in (yyyy)");
year = scanIn.nextInt();
GregorianCalendar greg = new GregorianCalendar(year, month, day);
difference = getDifference(greg);
month = greg.get(Calendar.MONTH) + 2;
year = greg.get(Calendar.YEAR);
//System.out.println("Year is " + year);
//System.out.println("Month " + month);
}
public static int getDifference(GregorianCalendar greg) {
Calendar now = new GregorianCalendar();
int difference;
System.currentTimeMillis.greg();
difference = greg - now;
return difference;
}
我不明白如何获得差异?
我的老师建议我们用毫秒来解决这个问题,但我已经花了 4 个小时试图解决这个问题,但我不明白这一点。
如何获取当前的日、月、年?
最佳答案
建议使用new date API在 Java 8 中而不是 Calendar
API 中。特别是,您可以使用 ChronoUnits.DAYS. Between()
方法,如here所述。 。我建议这样:
LocalDate dob = LocalDate.of(year, month, day);
LocalDate now = LocalDate.now();
difference=(int)ChronoUnit.DAYS.between(dob, now);
System.out.println("Days since date of birth: " + difference);
您可以轻松检查是否给出与旧界面相同的结果:
GregorianCalendar greg = new GregorianCalendar(year, month-1, day);
Calendar nowCal = new GregorianCalendar();
long deltaMillis = nowCal.getTime().getTime() - greg.getTime().getTime();
System.out.println("Days since date of birth: " + deltaMillis/(1000*60*60*24));
请注意,Calendar
界面从 0 开始计算月份,而新 API 从 1 开始。
希望对您有所帮助。
关于java - 使用公历与当前日期进行比较,无需外部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36880499/
我是一名优秀的程序员,十分优秀!