2017-05-11 7 views
0

、それぞれ一項に記載の権利が与えられString型の要素のリストを作成します。は、そのタイトルに日付を持つ日付私は文字列要素のリストを作成したい

data_2017_May_4 
data_2017_May_3 
data_2017_May_2 

重要なことは、これらの日付が作成される方法です。現在の日付から2日後まで作成する必要があります。現在の日付が2017年5月1日の場合、結果は次のようになります。

data_2017_May_1 
data_2017_April_30 
data_2017_April_29 

同じロジックが年(12月/ 1月)の間にスイッチに適用されます。

これは私のコードですが、月数と年数の変更は考慮していません。また、日付にジャンプ:

val formatter = new SimpleDateFormat("yyyy-MMM-dd") 
val currDay = Calendar.getInstance 

var list: List[String] = Nil 
var day = null 
var date: String = "" 
for (i <- 0 to 2) { 
    currDay.add(Calendar.DATE, -i) 
    date = "data_"+formatter.format(currDay.getTime) 
    list ::= date 
} 
println(list.mkString(",")) 

どのように目的に到達するには?

+0

'if(/ * day */<= 2){// decrement month'など – Rogue

答えて

1

java.time.LocalDateを使用できますか?もしそうなら、これを簡単に達成することができます:

import java.time.LocalDate 
import java.time.format.DateTimeFormatter 

val desiredFormat = DateTimeFormatter.ofPattern("yyyy-MMM-dd") 

val now = LocalDate.now() 
val dates = Set(now, now.minusDays(1), now.minusDays(2)) 

dates.map(_.format(desiredFormat)) 
    .foreach(date => println(s"data_$date")) 
+0

美しい!どの場合、 'LocalDate'を使うのはお勧めできませんか? – user7379562

+0

タイムスタンプへのアクセスが必要な場合、LocalDateにはその情報は含まれていません。 java.timeライブラリで利用できるLocalDateTime、ZonedDateTime、またはInstantを調べることができます。 – Tanjin

+0

この解決策には1つの保留中の問題があります。 'SimpleDateFormat(" yyyy-MMM-dd ")'を 'LocalDate'と一緒に使うには? – user7379562

関連する問題