【问题标题】:Problem to get the difference between two dates [duplicate]获取两个日期之间差异的问题[重复]
【发布时间】:2021-04-18 08:45:05
【问题描述】:

我想得到今天和生日之间的天数:

今日代码:

Date currentDate = Calendar.getInstance().getTime();
        SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        String currentString = formatter.format(currentDate);
        return currentString;

生日密码:

 String date =  dayOfMonth + "/" + month + "/" + year;
    datePicker1.setText(date);        
    Calendar calendar1 = Calendar.getInstance();
    calendar1.set(Calendar.MONTH,month +1);
    calendar1.set(Calendar.YEAR,year);
    calendar1.set(Calendar.DAY_OF_MONTH,dayOfMonth);        
    CharSequence datecharSequence = DateFormat.format("dd/MM/yyyy",calendar1);

计算代码:

 try {
           LocalDate date1 = LocalDate.now();
           LocalDate date2 = usrBirthDate();
           long diff = DAYS.between(date1, date2);
           Annotation.setText((int) diff);
       }
       catch (Exception exception){
           Toast.makeText(this, "Unable", Toast.LENGTH_SHORT).show();
       }

【问题讨论】:

  • 你用的是什么版本的java?如果它是 8+,您可能会受益于使用更新的日期\时间 API:docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html
  • 顺便考虑扔掉长期过时且臭名昭著的麻烦SimpleDateFormat和朋友。看看您是否可以使用 desugaring 或将 ThreeTenABP 添加到您的 Android 项目中,以便使用现代 Java 日期和时间 API java.time。使用起来感觉好多了。
  • 欢迎来到 Stack Overflow。你的代码有效吗?请问你的问题是什么?为了我们可以帮助您,请指定所需的结果并将任何错误消息或错误结果粘贴到您的问题中。
  • 不要尝试将日期处理为字符串。就像您将数字处理为intdouble,而不是String,将您的日期处理为LocalDate 对象。
  • 要找到更好的方法来找出差异,请参阅下面的 sanjeevRm 或my answer to the linked original question 的答案。除了使用所有错误的类之外,您做错了什么,请编辑您的问题并指定您的错误,我可以重新打开它,以便有人可以回答该部分。

标签: java android android-studio date calculation


【解决方案1】:

查找天数差异的有效方法是使用 ChronoUnit.DAYS

import static java.time.temporal.ChronoUnit.DAYS;

LocalDate date1 = LocalDate.now(); // current date
LocalDate date2 = LocalDate.of(2000, Month.JULY, 29); //  user birth date
long diff = DAYS.between(date1, date2);

【讨论】:

  • @sanjeevRm ,我想使用用户方法:usrBirthDate(),而不是静态的。
  • @user15358848, date1 - today() date2 - usrBirthDate()
  • 您可以将 usrBirthDate 分配给 date2 ,date2 = usrBirthDate(); usrBirthDate 必须返回 LocaDate
  • @sanjeevRm,我进行了更改,但没有结果:LocalDate date1 = LocalDate.now(); LocalDate date2 = usrBirthDate(); long diff = DAYS.between(date1, date2); Annotation.setText((int) diff);
  • 你能分享一下date1,date2的值和diff的结果吗,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-22
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多