前提 / 実現したいこと
Javaで以下の機能を実装したいのですが、
なかなか実装ができず、ご相談をさせてください。
文字列A 2022/01/01 12
文字列B 2022/01/01 16
とした場合、以下のリストを作成したい
{2022/01/01 12,2022/01/01 13,2022/01/01 14,2022/01/01 15,2022/01/01 16}
発生している問題・エラーメッセージ
いろいろと試していますが、以下エラーが出ます。
java.text.ParseException: Unparseable date
該当のソースコード
java
1import java.util.*; 2import java.text.ParseException; 3import java.text.SimpleDateFormat; 4import java.time.LocalDateTime; 5import java.time.format.DateTimeFormatter; 6import java.time.temporal.ChronoUnit; 7import java.util.ArrayList; 8import java.util.Calendar; 9import java.util.Date; 10import java.util.List; 11 12public class Main { 13 public static void main(String[] args) throws Exception { 14 15 // Your code here! 16 String from = "2022/01/01 12"; 17 String to = "2022/01/01 16"; 18 19 // 上記の時間単位でリスト化したい。 20 // {2022/01/01 12,2022/01/01 13,2022/01/01 14,2022/01/01 15,2022/01/01 16} 21 22 String[] recoveryTimeList; 23 SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH"); 24 Date dtFrom = sdf.parse(from); 25 Date dtTo = sdf.parse(to); 26 27 // 型変換 28 // LocalDateTime dt1 = LocalDateTime.ofInstant(dtFrom.toInstant(), ZoneId.systemDefault()); 29 // LocalDateTime dt2 = LocalDateTime.ofInstant(dtTo.toInstant(), ZoneId.systemDefault());; 30 LocalDateTime dt1 = LocalDateTime.parse(from); 31 LocalDateTime dt2 = LocalDateTime.parse(to); 32 LocalDateTime dtWk; 33 34 // 二つの時間の差異を算出 35 long localDiffDays6 = ChronoUnit.HOURS.between(dt1, dt2); 36 if (localDiffDays6 == 0) { 37 // リカバリー日時に差分なし 38 recoveryTimeList = new String[(int) localDiffDays6]; 39 recoveryTimeList[0] = from; 40 } else if (localDiffDays6 > 0) { 41 // リカバリー日時のリストを作成 42 recoveryTimeList = new String[(int) localDiffDays6]; 43 // to - from の時間差だけリストを作成 44 for (long i = 0; localDiffDays6 < 2; i++) { 45 dtWk = dt1.plusHours(i); 46 recoveryTimeList[(int) i] = dtWk.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); 47 } 48 } else { 49 // フォーマット不正 50 System.out.println("From - Toに指定した値が不正 "); 51 recoveryTimeList = new String[0]; 52 } 53 54 System.out.println(recoveryTimeList.toString()); 55 } 56}
試したこと
・データ型を複数パターン試しました。
サイトを参考にいろいろと試しましたが実装できず、
参考になるサイトなどでも助かりますので、教えていただけると幸いです。
補足情報(FW/ツールのバージョンなど)
java8
回答2件
あなたの回答
tips
プレビュー