当前位置: 首页 > 知识库问答 >
问题:

如何从日期变量和整型变量计算新的日期值[duplicate]

杜俊晤
2023-03-14

我试图创建一个小应用程序来保存许可证数据,我允许用户输入赎回日期和许可证长度。

我想创建一天的剩余字段,用户可以在其中查看他们在赎回新许可证之前还有多少天。

我用过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个答案

邢璞
2023-03-14

你可以用这个简单的方法找出两个日期之间的差异

public void printDifference(Date startDate, Date endDate) { 
    long different = endDate.getTime() - startDate.getTime();
    System.out.println("startDate : " + startDate);
    System.out.println("endDate : "+ endDate);
    System.out.println("different : " + different);

    long secondsInMilli = 1000;
    long minutesInMilli = secondsInMilli * 60;
    long hoursInMilli = minutesInMilli * 60;
    long daysInMilli = hoursInMilli * 24;

    long elapsedDays = different / daysInMilli;
    different = different % daysInMilli;

    long elapsedHours = different / hoursInMilli;
    different = different % hoursInMilli;

    long elapsedMinutes = different / minutesInMilli;
    different = different % minutesInMilli;

    long elapsedSeconds = different / secondsInMilli;

    System.out.printf(
        "%d days, %d hours, %d minutes, %d seconds%n", 
        elapsedDays, elapsedHours, elapsedMinutes, elapsedSeconds);  }

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

有关更多信息,请参阅此问题的答案和两个日期之间的差异

桓瀚
2023-03-14
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH);
Date firstDate = new Date();
Date secondDate = null;
secondDate = sdf.parse("06/30/2019");
long diffInMillies = Math.abs(secondDate.getTime() - firstDate.getTime());
long diff = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);

这会在几天内给你答案。

丌官开宇
2023-03-14

假设您在某种程度上提前(通过数据库或类似方式)收到许可证截止日期,您可以使用java。时间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的转换。时间LocalDatejava。util。日期和时间:

    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()
                );
    }

 类似资料:
  • 问题内容: 我有以下查询,该查询使用日期变量,该变量在存储过程内部生成: 问题是@sp_Date值似乎被忽略了,我想知道为什么吗?我定义或使用不正确吗? 问题答案: 您的语法很好,它将返回过去6个月内的行; 您确定类型吗?

  • 我有一个事务类,其中有到达日期、离开日期等变量,我不确定如何定义日期数据类型,因此必须根据开始日期对事务信息进行排序。

  • 我有一个关于方法的赋值,和2个变量的类型: (也与方法相关) 我还有一个 我需要设置一个,然后接受一个,如果归还日期的天数大于30(),与借用日期相比,我应该输出true。 代码还没有完成,只是在这个特定的问题上遇到了麻烦。我试过明显的

  • 在这个项目中,我试图弄清楚两个日期之间的差异有多长。一个日期是当前日期,另一个是一个人选择的日期。我遇到的问题是,由于变量中的日期是字符串,而不是数字,所以我得到了nan。我尝试使用parseInt()属性,但是,这给了我8个值,这并不是now和New Years eve之间的区别。那么,我如何将一个变量更改为一个数字,但要保持它的日期格式呢? 这是我当前的代码,既用于查找未来日期,也用于查找差异

  • 问题内容: 尝试将日期变量插入数据库表时遇到困难。我的变量称为: 从具有日历选择器的文本框中读取date4变量值。为了插入日期列,我将字段类型设置为date: 但是,提交表单后,我收到了以下消息: javax.faces.component.UpdateModelException:java.lang.IllegalArgumentException:无法将类型为java.util.Date的4/

  • 问题内容: 我对angularjs相当陌生,但现在就开始了。我可以通过angularjs窗体中的两个日期,但是我需要做的是以某种方式减去两个日期以得到两者之间的天数差异。我创建了一个jQuery函数来执行此操作,但是我不知道如何将两个日期传递给该函数。所以我想知道是否还有其他方法可以解决此问题? 我正在尝试根据两个日期之间要设置样式的某些天之间的天数来设置触发器系统。例如,如果要在10天内使用 样