ecco il mio codice
boolean isWithinRange(String d) { boolean withinDate = false; try { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date = dateFormat.parse(d); withinDate = !(date.before(startDate) || date.after(endDate)); } catch (ParseException parseException) { } return withinDate; }
ingressi ingressi ingressi ingressi ingressi
2015-11-26 2015-11-26 - Copia
sia il ritorno vero, ma quello che ho richiesto è "2015-11-26" dovrebbe essere vero e "2015-11-26 - Copia" dovrebbe essere falso.
En title : How to find the given date is with in specified date range
questo perché SimpleDateFormat analizza felicemente "2015-11-26" e ignora la parte "- Copia".
il javadoc dichiara:
per rilevare se è stata usata l'intera stringa, utilizzare invece il metodo
parse(String source, ParsePosition pos)
. ParsePosition ti dice dove l'analisi si è fermata. basta confrontare questo con la lunghezza della stringa di data originale.il problema qui è che stiamo passando il Formato Data 'YYYY-MM-DD'. questo verificherà l'input dato fino a questo formato.
per esempio,
il codice di cui sopra fa eccezione perché stiamo passando formato Data come 'YYYY-MM-DD hh: mm: SS'. quindi questo troverà l'ora minuti e secondi
d
ha uno spazio come primo carattere che non fa parte della data. questo sarebbe ancora tornaretrue
per qualcosa come2015-12-11-Copy
.basta verificare se la dimensione è 10 prima del test: