簡體   English   中英

日歷減去日期問題

[英]Calendar subtract date issue

我的腳本差不多完成了,但是有一點打fix似乎無法解決。

首先讓我快速解釋一下腳本。 它使用Calendar獲取當前日期。 然后,它向該當前日期增加2天,然后創建格式,以更改新日期的格式。 然后,它將新日期打印到.txt文件中,然后使用Scanner從.txt文件中獲取該日期。 到了這里,我遇到了一些小麻煩。 我要從.txt文件中獲得的那個新日期要從實際的當前日期中減去。 因此,我可以從當前系統日期開始倒計時,直到從該日期開始倒數2天。 當前,代碼是使用減/倒數功能中的日期變量todAdd減去,該變量是代碼的最后6行。 但是我不希望它成為dateFroText變量,而是希望它成為dateFroText變量,但是由於它似乎不能很好地處理變量的解析,因此我無法將其解析為最后的減法代碼。

因此基本上可以舉一個例子,我希望整個倒數計時部分的todAdd更改為dateFroText 因此,而不是您在下面的完整代碼中看到的行,就像這樣: int yearDiff = dateFroText.get(Calendar.YEAR) - startDat.get(Calendar.YEAR);

目前,我嘗試將其更改為integerstringdate但是所有這些均生成一個錯誤,這使得無法運行代碼。

如有必要,我已復制了整個代碼,因此您可以進行實際測試。

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轉換為Calendar對象以進行計算。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM