Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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_Date_Parsing_Calendar_Printwriter - Fatal编程技术网

Java 日历减去日期问题

Java 日历减去日期问题,java,date,parsing,calendar,printwriter,Java,Date,Parsing,Calendar,Printwriter,我的剧本快写完了,但有一个小问题我似乎无法解决 首先,让我快速解释一下脚本。它使用日历获取当前日期。然后,它在当前日期的基础上增加2天,然后创建一个格式,以更改新日期的格式。然后,它将新日期打印到.txt文件中,然后使用扫描仪从.txt文件中获取该日期。就在这里,我遇到了一些小麻烦。我从.txt文件中得到的新日期,我想从实际的当前日期中减去。因此,我将能够从当前系统日期开始倒计时,直到2天之后。当前,代码正在使用减法/倒计时功能中的日期变量todAdd进行减法,减法/倒计时功能是代码的最后6行。

我的剧本快写完了,但有一个小问题我似乎无法解决

首先,让我快速解释一下脚本。它使用
日历
获取当前日期。然后,它在当前日期的基础上增加2天,然后创建一个格式,以更改新日期的格式。然后,它将新日期打印到.txt文件中,然后使用
扫描仪从.txt文件中获取该日期。就在这里,我遇到了一些小麻烦。我从.txt文件中得到的新日期,我想从实际的当前日期中减去。因此,我将能够从当前系统日期开始倒计时,直到2天之后。当前,代码正在使用减法/倒计时功能中的日期变量
todAdd
进行减法,减法/倒计时功能是代码的最后6行。但是,我希望它不是日期变量,而是
dateFroText
变量,但是我无法将它解析为最后一个减法代码,因为它似乎不能很好地处理变量的解析

因此,基本上,为了给出一个示例,我希望整个倒计时部分都使用
dateFroText
更改
todAdd
。因此,与您在下面的完整代码中看到的行不同,它是这样的
int yearDiff=dateFroText.get(Calendar.YEAR)-startDat.get(Calendar.YEAR)

目前我已尝试将其更改为
整数
字符串
日期
,但所有这些都会生成一个错误,这使代码无法运行

如果有必要,我已经复制了整个代码,因此您可以实际测试它

public class CdowTDate
{

    static File dFileD = new File("date.txt");
    static String date = "";

  public static void main(String[] args) throws ParseException {

      //Get current date and time
      Calendar startDat = Calendar.getInstance();
      System.out.println("Current date: " + startDat.getTime());

      //Get that current date and time and then add 2 days
      Calendar todAdd = Calendar.getInstance();
      todAdd.add(Calendar.DATE, 2);
      System.out.println("Date in 2 days: " + todAdd.getTime());

      //Create a format for sending date to text file
      SimpleDateFormat formDat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
      String formatted = formDat.format(todAdd.getTime());
      System.out.println("Formatted: " + formatted);

      try{
          PrintWriter dW = new PrintWriter("date.txt");
          dW.println(formatted);
          dW.close();
      } catch (IOException e) {
      }

      System.out.println(formDat.parse(formatted));

      try {
          Scanner dateRead = new Scanner(dFileD);
          while (dateRead.hasNextLine()) {
              date = dateRead.nextLine();
              Date dateFroText = formDat.parse(date);
              System.out.println("Date from text new format: " + dateFroText);
          }
          dateRead.close();
        } catch (Exception e) {
            System.out.println("Error!");
        }

      int yearDiff = todAdd.get(Calendar.YEAR) - startDat.get(Calendar.YEAR);
      int dayDiff = ((yearDiff*365) + todAdd.get(Calendar.DAY_OF_YEAR)) - startDat.get(Calendar.DAY_OF_YEAR);
      dayDiff--;
      int hourDiffer = todAdd.get(Calendar.HOUR_OF_DAY)+23 - startDat.get(Calendar.HOUR_OF_DAY);
      int minuDiff = todAdd.get(Calendar.MINUTE)+60 - startDat.get(Calendar.MINUTE);
      System.out.println(dayDiff + " days " + hourDiffer + " hours " + minuDiff +" minutes remaining");


  }

}

您需要将日期对象dateFroTxt转换为日历对象才能进行计算

public static void main(String[] args) throws ParseException {

        //Get current date and time
        Calendar startDat = Calendar.getInstance();
        System.out.println("Current date: " + startDat.getTime());

        //Get that current date and time and then add 2 days
        Calendar todAdd = Calendar.getInstance();
        todAdd.add(Calendar.DATE, 2);
        System.out.println("Date in 2 days: " + todAdd.getTime());

        //Create a format for sending date to text file
        SimpleDateFormat formDat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
        String formatted = formDat.format(todAdd.getTime());
        System.out.println("Formatted: " + formatted);

        try {
            PrintWriter dW = new PrintWriter("date.txt");
            dW.println(formatted);
            dW.close();
        } catch (IOException e) {
        }

        System.out.println(formDat.parse(formatted));

        Date dateFroText = null;
        try {
            Scanner dateRead = new Scanner(dFileD);
            while (dateRead.hasNextLine()) {
                date = dateRead.nextLine();
                dateFroText = formDat.parse(date);
                System.out.println("Date from text new format: " + dateFroText);
            }
            dateRead.close();
        } catch (Exception e) {
            System.out.println("Error!");
        }

        if (dateFroText != null) {
            Calendar dateFromTxtCal = Calendar.getInstance();
            dateFromTxtCal.setTime(dateFroText);
            int yearDiff = dateFromTxtCal.get(Calendar.YEAR) - startDat.get(Calendar.YEAR);
            int dayDiff = ((yearDiff * 365) + dateFromTxtCal.get(Calendar.DAY_OF_YEAR)) - startDat.get(Calendar.DAY_OF_YEAR);
            dayDiff--;
            int hourDiffer = dateFromTxtCal.get(Calendar.HOUR_OF_DAY) + 23 - startDat.get(Calendar.HOUR_OF_DAY);
            int minuDiff = dateFromTxtCal.get(Calendar.MINUTE) + 60 - startDat.get(Calendar.MINUTE);
            System.out.println(dayDiff + " days " + hourDiffer + " hours " + minuDiff + " minutes remaining");
        }
    }

请公布你的错误。