Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java从特定日期进行减法运算_Java - Fatal编程技术网

如何使用Java从特定日期进行减法运算

如何使用Java从特定日期进行减法运算,java,Java,我遇到了一个与Java日期函数相关的问题 我从应用程序(例如:6/5/18)中获取日期,它是MM/DD/YY格式。现在我需要从日期开始做-2。我知道如何使用calendar对象从当前系统日期执行-2操作(请参阅下面的代码) 我不能用这种格式填写申请表上的日期。有人能帮我吗?(任何其他方法都可以)我建议您使用与Java 8兼容的日期和时间类型 如果使用,则这是解决方案: LocalDate.now().minusDays(2) 我建议您使用与Java8兼容的日期和时间类型 如果使用,则这是解决方

我遇到了一个与Java日期函数相关的问题

我从应用程序(例如:6/5/18)中获取日期,它是MM/DD/YY格式。现在我需要从日期开始做-2。我知道如何使用calendar对象从当前系统日期执行-2操作(请参阅下面的代码)


我不能用这种格式填写申请表上的日期。有人能帮我吗?(任何其他方法都可以)

我建议您使用与Java 8兼容的日期和时间类型

如果使用,则这是解决方案:

LocalDate.now().minusDays(2)

我建议您使用与Java8兼容的日期和时间类型

如果使用,则这是解决方案:

LocalDate.now().minusDays(2)

从您的问题来看,似乎您在处理格式设置,然后进行减法运算方面遇到了挑战

为此,我推荐使用格式化程序的Java日期和时间API

下面给出了实现您的需求的junit方法

@Test
public void testDateFormatUsingJava8() {
    CharSequence inputdateTxt = "6/5/18";
    DateTimeFormatter  formatter = DateTimeFormatter.ofPattern("M/d/yy");
    LocalDate inputDate = LocalDate.parse(inputdateTxt, formatter);
    System.out.println(inputDate.minusDays(2L).format(formatter));
}

@Test
public void testDateCalenderUsingStringSplit() {
    String inputdateTxt = "6/5/18";
    String[] dateComponenets = inputdateTxt.split("//");
    Calendar cal = Calendar.getInstance();
    //Know where are the year month and date are stored.
    cal.set(Integer.parseInt(dateComponenets[2]), Integer.parseInt(dateComponenets[0]), Integer.parseInt(dateComponenets[2]) );
    cal.add(Calendar.DATE,-2);
    DateFormat dateFormat = new SimpleDateFormat("M/d/yy");
    String pastDate = dateFormat.format(cal.getTime());
    System.out.println("Date is displayed as : "+ pastDate );
}

@Test
public void testDateCalenderUsingJavaUtilDateApi() throws ParseException {
    String inputdateTxt = "6/5/18";
    DateFormat dateFormat = new SimpleDateFormat("M/d/yy");
    Date date = dateFormat.parse(inputdateTxt);
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.DATE,-2);
    String pastDate = dateFormat.format(cal.getTime());
    System.out.println("Date is displayed as : "+ pastDate );
我之所以使用“M/d/yy”,是因为您的问题没有将输入日期中的日期和月份字段填充为零。如果保证您在日期和月份字段中收到填充值,建议使用“MM/dd/yy”

请参考以下答案:


编辑:考虑到不使用Java8日期时间API的限制,我添加了另外两种方法来解决这个问题。OP可以自由选择任何一种解决方案。保持Java 8解决方案的完整性以供参考。

从您的问题来看,您似乎在处理格式设置,然后执行减法方面遇到了挑战

为此,我推荐使用格式化程序的Java日期和时间API

下面给出了实现您的需求的junit方法

@Test
public void testDateFormatUsingJava8() {
    CharSequence inputdateTxt = "6/5/18";
    DateTimeFormatter  formatter = DateTimeFormatter.ofPattern("M/d/yy");
    LocalDate inputDate = LocalDate.parse(inputdateTxt, formatter);
    System.out.println(inputDate.minusDays(2L).format(formatter));
}

@Test
public void testDateCalenderUsingStringSplit() {
    String inputdateTxt = "6/5/18";
    String[] dateComponenets = inputdateTxt.split("//");
    Calendar cal = Calendar.getInstance();
    //Know where are the year month and date are stored.
    cal.set(Integer.parseInt(dateComponenets[2]), Integer.parseInt(dateComponenets[0]), Integer.parseInt(dateComponenets[2]) );
    cal.add(Calendar.DATE,-2);
    DateFormat dateFormat = new SimpleDateFormat("M/d/yy");
    String pastDate = dateFormat.format(cal.getTime());
    System.out.println("Date is displayed as : "+ pastDate );
}

@Test
public void testDateCalenderUsingJavaUtilDateApi() throws ParseException {
    String inputdateTxt = "6/5/18";
    DateFormat dateFormat = new SimpleDateFormat("M/d/yy");
    Date date = dateFormat.parse(inputdateTxt);
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.DATE,-2);
    String pastDate = dateFormat.format(cal.getTime());
    System.out.println("Date is displayed as : "+ pastDate );
我之所以使用“M/d/yy”,是因为您的问题没有将输入日期中的日期和月份字段填充为零。如果保证您在日期和月份字段中收到填充值,建议使用“MM/dd/yy”

请参考以下答案:



编辑:考虑到不使用Java8日期时间API的限制,我添加了另外两种方法来解决这个问题。OP可以自由选择任何一种解决方案。保留Java 8解决方案的完整性以供参考。

您使用的是哪个版本的Java?1.8?我想您必须从从应用程序获取的日期开始构建日历对象。我建议您避免使用
SimpleDateFormat
类。它不仅早已过时,而且还出了名的麻烦<代码>日历也过时了。今天我们有了更好的版本。您使用的是哪个版本的Java?1.8?我想您必须从从应用程序获取的日期开始构建日历对象。我建议您避免使用
SimpleDateFormat
类。它不仅早已过时,而且还出了名的麻烦<代码>日历也过时了。今天我们有了更好的答案。这是迄今为止对这个问题最好、最准确的答案。可以考虑方法名称<代码>随机<代码>有点随机?谢谢你的回答。是的,我也同意这个事实,这是对我的问题最准确的回答。我没有使用Java日期和时间,因为OATS的版本,我将无法使用它。你的答案在我看来很完美,但我不能使用它。@OleV.V。谢谢同意。方法名称有点太随意了。我们已经根据上下文对其进行了修改。这是在功能分支代码的一个测试类中快速试用的结果:)@Chandrima,我也添加了其他解决方案。选择一个你喜欢的@Amal-非常感谢您提供的解决方案。我采取了第三种选择,它奏效了。这是迄今为止对这个问题最好、最准确的答案。可以考虑方法名称<代码>随机<代码>有点随机?谢谢你的回答。是的,我也同意这个事实,这是对我的问题最准确的回答。我没有使用Java日期和时间,因为OATS的版本,我将无法使用它。你的答案在我看来很完美,但我不能使用它。@OleV.V。谢谢同意。方法名称有点太随意了。我们已经根据上下文对其进行了修改。这是在功能分支代码的一个测试类中快速试用的结果:)@Chandrima,我也添加了其他解决方案。选择一个你喜欢的@Amal-非常感谢您提供的解决方案。我已经采取了第三种选择,并且成功了。谢谢你的回答。我是在OATS工具中完成的,我无法导入这个包-java.time.LocalDate。此外,我将有一个特定的日期做减法。LocalDate.now().minusDays(2)将给出比当前日期早2天的日期。这并不是我问题的真正解决办法。如果你能在这方面给我更多的指导,那将非常有帮助。谢谢你的回答。我是在OATS工具中完成的,我无法导入这个包-java.time.LocalDate。此外,我将有一个特定的日期做减法。LocalDate.now().minusDays(2)将给出比当前日期早2天的日期。这并不是我问题的真正解决办法。如果你能在这方面给我更多的指导,那将非常有帮助。