Algorytm data rozpoznawanie wzorców nie tylko zidentyfikować datę wzór ale także pobiera prawdopodobną datę w formacie daty Java. Ten algorytm jest bardzo szybki i lekki. Czas przetwarzania jest liniowy, a wszystkie daty są identyfikowane w jednym przebiegu. Algorytm rozpatruje datę za pomocą mechanizmu drzewa. Struktury danych drzewa są tworzone niestandardowo w celu tworzenia obsługiwanych wzorców daty, czasu i miesiąca.
Algorytm potwierdza również wiele znaków spacji między literałami daty. Na przykład. DD DD DD i DD DD DD uważa się za ważne daty.
Następujące wzorce daty są uważane za prawidłowe i można je zidentyfikować za pomocą tego algorytmu.
dd MM (MM) rr (rr) rr (rr) MM (MM) dd mm (MM) dd yy (yy)
gdzie M oznacza miesiące dosłowny jest w formacie alfabet jak Jan lub styczniu
Dopuszczalne separatory między datami to "/", "\", "", ",", "|", "-", ""
Rozpoznaje również wzór czasu końcowego w następującym formacie hh (24): mm : ss.SSS am/pm hh (24): mm: ss am/pm hh (24): mm: ss am/pm
Rozdzielczość jest liniowa, nie stosuje się dopasowania wzoru ani siły brutalnej. Algorytm ten opiera się na przechodzeniu drzewa i zwraca z powrotem listę dat z następującymi trzema składnikami - ciąg daty określony w tekście - przekształcony & sformatowany ciąg daty - SimpleDateFormat
Korzystanie z łańcucha daty i ciągu formatów, użytkownicy mogą przekonwertuj ciąg na obiekty na podstawie ich wymagań.
Biblioteka algorytmów dostępna jest w centralnym systemie.
<dependency>
<groupId>net.rationalminds</groupId>
<artifactId>DateParser</artifactId>
<version>0.3.0</version>
</dependency>
Przykładowy kod do użycia znajduje się poniżej.
import java.util.List;
import net.rationalminds.LocalDateModel;
import net.rationalminds.Parser;
public class Test {
public static void main(String[] args) throws Exception {
Parser parser=new Parser();
List<LocalDateModel> dates=parser.parse("Identified date :'2015-January-10 18:00:01.704', converted");
System.out.println(dates);
}
}
wyjściowe: [LocalDateModel {originalText = 2015, styczeń, 10: 18: 00: 01,704, dateTimeString 10.01.2015 = 18: 00: 01,704, conDateFormat = rrrr MM-dd HH: MM: SS .SSS rozpocząć = 18, koniec = 46}]
Szczegółowy strony na http://coffeefromme.blogspot.com/2015/10/how-to-extract-date-object-from-given.html
pełna sieć jest dostępna na GitHub w https://github.com/vbhavsingh/DateParser
Twój regex jest dla formatu 'dd-mm-yyyy', a łańcuch ma' MM-DD-RRRR '. Rozwiązanie: potrzebujesz wszędzie spójnego formatu, co nie zawsze jest możliwe przy wprowadzaniu danych przez użytkownika. Nie możesz zaakceptować obu, ponieważ nie wiesz, co to jest "01-02-2013" ... – Kobi
+1 Kobi. Nie powinieneś także zapomnieć o inkrementacji "count". –