2016-07-25 21 views
1

私は日付フィールドが.csvに配置されており、各日付から1日を引く必要があります。これらの日付は、1つのcsvからString変数として取得され、別の変数にString変数として格納されます。これらの日付はすべてmm/dd/yyyyの形式であり、これらの日付のそれぞれから1日を引く必要があります。私はこれを行う方法の最善の解決策を探しています。mm/dd/yyyyの形式で日付から1日を引く

たとえば、私は7/28/2016として日付を持っていますが、私は7/27/2016に移動する必要があります。

すべてのサポートは、事前に感謝します。

編集:すべての回答がとても早くて本当に感謝しています。最初のコメントのようにステップを分けてしまったので、JodaTimeの回答を使用できました。

これはコードです:

private String subtractDate(String date) { 
     SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy"); 
     String returnValue = ""; 
     try { 
      Date newDate = formatter.parse(date); 
      Calendar cal = Calendar.getInstance(); 
      cal.setTime(newDate); 
      cal.add(Calendar.DATE, -1); 
      Date minusOne = cal.getTime(); 
      returnValue = formatter.format(minusOne); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return returnValue; 
    } 

これは私がすべての答えを本当に感謝再び、今正常に動作しています。私は最初の答えを受け入れるつもりですが、それはうまくいくと思っていますが、私はその道には行かなかっただけです。

+5

三つの部分にあなたの問題を区切り:1)より賢明な型に文字列を解析。 2)1日を引く。 3)文字列にフォーマットし直します。 'java.time.LocalDate'を使うことをお勧めします。 –

+0

*厳密には重複していませんが、1日を追加するか1日を引くことは同じものです –

+0

すべての助けてくれてありがとう! –

答えて

0
SimpleDateFormat dateFormat = new SimpleDateFormat("mm/dd/yyyy"); 

Date date = dateFormat.parse("Your date as String"); 

その後、JodaTimeを使用して日を引くことができます。

DateTime dateTime = new DateTime(date); 

dateTime.minusDays(1); `

+0

私はこれが本当に好きです。私がやりたいことを明示していますが、これも試してみることができます。助けてくれてありがとう! –

+0

ああ、いいえ、 "mm"(分)は使用せず、 "MM"(月)を使用してください。また、SimpleDateFormatとJoda-Timeを混在させることは恐ろしいことです。この場合、Jodas独自のフォーマットエンジンが推奨されるはずです。 –

関連する問題