猿问

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

设想


用户可以使用应用程序记录他们的许可证,他们输入许可证被兑换的日期,他们还输入许可证的长度(天)。


我想弄清楚您是否能够从这两个变量计算出新的日期。例如


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 日期选择器,有没有更有效的选择?


莫回无
浏览 134回答 3
3回答

暮色呼如

Java(任何)解决方案:Date currentDate = new Date(); // or any date you setCalendar 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 setLocalDateTime 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 setDateTime currentDatePlusSevenDays = currentDate.plusDays(7);   

开心每一天1111

如果你不使用 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));

HUWWW

如果你使用 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 daysLocalDateTime newDate = dateRedeemed.plusDays(7);System.out.println(newDate.toString()); // 2019-07-01T16:31:16.993
随时随地看视频慕课网APP

相关分类

Java
我要回答