This question already has answers here:
How can I increment a date by one day in Java?
(28个答案)
Calculating the difference between two Java date instances
(44个回答)
Calculate days between two dates in Java 8
(13个回答)
在10个月前关闭。
我正在尝试创建一个包含许可证数据的小应用程序,我允许用户输入兑换日期和许可证长度。
我想创建一天的剩余字段,用户可以在其中查看他们剩余多少天,直到他们兑换了新许可证。
我用过jxDatepicker
并具有三个组合框,用户可以在其中选择许可证可使用的年数,月数和天数
编辑
我想我已经让一些人感到困惑。那或者我不明白这将如何解决我的问题。我会尝试并详细描述一下
情境
用户可以使用该应用程序记录其许可证,输入他们兑换许可证的日期,还可以输入许可证的长度(天)。
我试图找出您是否能够从这两个变量中计算出一个新日期。例如
请注意现代API的使用,建议现在使用。
编辑
对于您不想重构整个代码的情况,以下是两种方法,用于处理从
(28个答案)
Calculating the difference between two Java date instances
(44个回答)
Calculate days between two dates in Java 8
(13个回答)
在10个月前关闭。
我正在尝试创建一个包含许可证数据的小应用程序,我允许用户输入兑换日期和许可证长度。
我想创建一天的剩余字段,用户可以在其中查看他们剩余多少天,直到他们兑换了新许可证。
我用过jxDatepicker
并具有三个组合框,用户可以在其中选择许可证可使用的年数,月数和天数
int days = Integer.parseInt(cboDays.getSelectedItem().toString());
Date dRedeemed = cboDate.getDate();
SimpleDateFormat format = new SimpleDateFormat("dd/MM/YYYY");
String strRedeemed = format.format(dRedeemed);
days = (years * 365) + (months * 12) + days;
编辑
我想我已经让一些人感到困惑。那或者我不明白这将如何解决我的问题。我会尝试并详细描述一下
情境
用户可以使用该应用程序记录其许可证,输入他们兑换许可证的日期,还可以输入许可证的长度(天)。
我试图找出您是否能够从这两个变量中计算出一个新日期。例如
days = INPUT FROM USER;
dateRedeemed = new Date();
newDate = dateRedeemed + days;
最佳答案
假设您之前(通过数据库或类似方式)以某种方式收到许可证截止期限,则可以使用java.time
API来计算截止日期之前的剩余天数,该示例如下:
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.time.format.DateTimeFormatter;
public class StackoverflowMain {
public static void main(String args[]) {
// define a future deadline (hint: define some others for your test cases, too)
LocalDate deadLine = LocalDate.parse("2019-06-29", DateTimeFormatter.ISO_DATE);
System.out.println("Days til deadline: " + getRemainingDays(deadLine));
}
public static long getRemainingDays(LocalDate deadline) {
return ChronoUnit.DAYS.between(LocalDate.now(), deadline);
}
}
请注意现代API的使用,建议现在使用。
编辑
对于您不想重构整个代码的情况,以下是两种方法,用于处理从
java.time.LocalDate
到java.util.Date
以及返回的转换: public LocalDate toLocalDate(Date dateToConvert) {
return dateToConvert.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
}
public static Date toDate(LocalDate localDate) {
return Date.from(
localDate.atStartOfDay()
.atZone(ZoneId.systemDefault())
.toInstant()
);
}