为了账号安全,请及时绑定邮箱和手机立即绑定

如何计算新日期?- 使用一个日期变量和一个 int 变量

如何计算新日期?- 使用一个日期变量和一个 int 变量

莫回无 2023-02-16 16:18:26
设想用户可以使用应用程序记录他们的许可证,他们输入许可证被兑换的日期,他们还输入许可证的长度(天)。我想弄清楚您是否能够从这两个变量计算出新的日期。例如days = INPUT FROM USER;          days = 7;      dateRedeemed = new Date();       date = 24/06/2019;      newDate = dateRedeemed + days;   newDate = 01/07/2019;    //Getting the values            String name = txtName.getText();            String contact = txtContact.getText();            int years = Integer.parseInt(cboyears.getSelectedItem().toString());            int months = Integer.parseInt(cboMonths.getSelectedItem().toString());            int days = Integer.parseInt(cboDays.getSelectedItem().toString());//Calculation                        days = (years * 365) + (months * 12) + days;            SimpleDateFormat format = new SimpleDateFormat("dd/MM/YYYY");            Date dRedeemed = cboDate.getDate();            String strRedeemed = format.format(dRedeemed);如果有人能提供帮助那就太好了编辑这个线程中的一些很好的建议,你们中的很多人一直指出 Date 类非常糟糕和过时我现在将开始使用 LocalDateTime 类,因为它看起来更强大,我想问的另一件事是,有一个更高效的日期选择器。我一直在使用 swingx 日期选择器,有没有更有效的选择?
查看完整描述

3 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

Java(任何)解决方案:


Date currentDate = new Date(); // or any date you set

Calendar c = Calendar.getInstance();

c.setTime(currentDate);

c.add(Calendar.DAY_OF_MONTH, 7);

Date currentDatePlusSevenDays = c.getTime();

Java 8+ 解决方案:


Date currentDate = new Date(); // or any date you set

LocalDateTime localDateTime = currentDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();

localDateTime = localDateTime.plusDays(7);

Date currentDatePlusSevenDays = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());

带有外部库Joda-Time的 Java(任何)解决方案:


DateTime currentDate = DateTime.now(); // or any date you set

DateTime currentDatePlusSevenDays = currentDate.plusDays(7);   


查看完整回答
反对 回复 2023-02-16
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

如果你不使用 Java 8,你可以使用下面的代码


int days = 8;

Calendar c = Calendar.getInstance();

c.setTime(new Date());

c.add(Calendar.DATE, days);


SimpleDateFormat format = new SimpleDateFormat("dd/MM/YYYY");

Date newDate = c.getTime();

System.out.println(dateFormat.format(newDate));


查看完整回答
反对 回复 2023-02-16
?
HUWWW

TA贡献1874条经验 获得超12个赞

如果你使用 Java 8,你应该使用 LocalDateTime 类。


它让事情变得简单多了。


LocalDateTime dateRedeemed = LocalDateTime.now(); // 2019-06-24T16:31:16.993

// custom date also possible (year, month, day (of month), hours, minutes, seconds and nanoseconds)

LocalDateTime dateRedeemed = LocalDateTime.of(2019, 06, 24, 13, 55, 36, 123);


// Add 7 days

LocalDateTime newDate = dateRedeemed.plusDays(7);

System.out.println(newDate.toString()); // 2019-07-01T16:31:16.993


查看完整回答
反对 回复 2023-02-16
  • 3 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信