如何根据Date变量和int变量计算新的Date值

时间:2019-06-24 10:13:38

标签: java date

我正在尝试创建一个包含许可证数据的小应用程序,我允许用户输入兑换日期和许可证长度。

我想创建一天的剩余字段,以便用户可以查看剩余的天数,直到他们兑换了新许可证为止。

我使用了 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;

3 个答案:

答案 0 :(得分:2)

假设您之前(通过数据库或类似方式)以某种方式收到许可证截止期限,则可以使用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.LocalDatejava.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()
                );
    }

答案 1 :(得分:0)

url = "https://my_site.com/upload"
fname = "image.png"
data = {'api_key':'123456789'}
files = {'field_image': open(fname, 'rb')}
r = requests.post(url, data=data, files=files)

这使您可以在几天之内得到答复。

答案 2 :(得分:0)

您可以使用这种简单的方法来找出两个日期之间的差异


#FED000

在上述方法中,您可以将第一个参数作为许可证的当前日期,将第二个参数的到期日期作为参数

有关此问题的更多信息,请参考 Android difference between Two Dates