der Monat zwischen zwei Datumsangaben

Bluedaishi

Bekanntes Mitglied
Hallo zusammen folgendes Problem,
ich habe mehrere Text Dateien in denen ein Datum vorkommt diese sollen in einer Datenbank abgelegt werden.
in den Textdateien kann es zu folgender Situation kommen
Datei 1 = 02.02.17 - 28.02.17
Datei 2 = 31.01.17 - 28.02.17
Datei 3 = 02.02.17 - 03.03.17
Datei 4 = 14.02.17 - 03.03.17
Datei 5 = 31.01.17 - 03.03.17

alle diese Dateien müssen in der Datenbank für den selben Monat hier "02" abgelegt werden.
welches Datum ich zuerst finde weiss ich vorher nicht

kann mir da jemand weiter helfen ????

vielen Dank im Vorraus
 
stehen nur solche Zeilen in der Textdatei ? Du könntest es dann z.B. mit reiner String-Verarbeitung lösen und den eingelesenen Text bei den Punkten splitten und dann in den "passenden" Teilstrings nachsehen was da drinnen steht
 
ich kann den String auch zerlegen ich weiß an welcher stelle das Datum in der Textdatei angegeben wird das ist immer die selbe
 
Ahja jetzt verstehe ich es. Du kannst hier die Daten mitteln indem du die Tage dazwischen berechnest und dann das YearMonth bekommst:
Java:
import java.time.LocalDate;
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Test {
 
  public static void main(String... args) {
    String[] ranges = {"02.02.17 - 28.02.17",
            "31.01.17 - 28.02.17",
            "02.02.17 - 03.03.17",
            "14.02.17 - 03.03.17",
            "31.01.17 - 03.03.17"};
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yy");
    List<YearMonth> collect = Stream.of(ranges)
                                      .map(dr -> dr.split("\\s+-\\s+"))
                                      .map(dr -> calculate(dr[0], dr[1], formatter))
                                      .collect(Collectors.toList());
    System.out.println(collect);
  }
 
  public static YearMonth calculate(String start, String end, DateTimeFormatter formatter) {
    return calculate(LocalDate.parse(start, formatter), LocalDate.parse(end, formatter));
  }
 
  public static YearMonth calculate(LocalDate start, LocalDate end) {
    long daysBetween = ChronoUnit.DAYS.between(start, end);
    return YearMonth.from(start.plusDays(daysBetween / 2));
  }
}
Result
Code:
[2017-02, 2017-02, 2017-02, 2017-02, 2017-02]
 
hab jetzt ein anderes Problem mit netbeans

warning: [options] bootstrap class path not set in conjunction with -source 1.7
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 warning
 

Zurück
Oben