2017-02-01 6 views
0

私はほぼ完成したスクリプトを持っていますが、修正できないようなわずかな問題があります。カレンダーの日付を差し引く

まず、スクリプトを簡単に説明してください。 Calendarを使用して現在の日付を取得します。その後、現在の日付に2日を加算した後、新しい日付の書式を変更するための書式が作成されます。新しい日付を.txtファイルに出力した後、を使用して.txtファイルからその日付を取得します。それがここにあり、ここで私は若干のトラブルを抱えています。私が.txtファイルから得たその新しい日付、私は実際の現在の日付から引き算したいと思います。したがって、私は現在のシステム日付から2日後までカウントダウンすることができます。現在、コードの最後の6行である減算/カウントダウン関数内の日付変数todAddを使用してコードが減算されています。しかし、その日付変数ではなく、dateFroText変数にしたいと思いますが、変数の解析を非常にうまく処理していないように見えるため、最後の減算コードを解析できません。

基本的に例を挙げれば、todAdddateFroTextで変更されています。だからではなく、あなたがそれ以下の完全なコードで見られる線でこのint yearDiff = dateFroText.get(Calendar.YEAR) - startDat.get(Calendar.YEAR);

現在、私はstringdateintegerにそれを変更しようとしているが、それらのすべてを実行することは不可能つのエラーを生成するようになりますコード。

必要に応じて、コード全体をコピーしたので、実際にテストすることができます。

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


    } 

} 
+0

エラーを投稿してください。 – chevydog

答えて

0

計算を行うには、dateオブジェクト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"); 
     } 
    } 
関連する問題