Conversione della stringa Java fino alla data
-
26-09-2019 - |
Domanda
Qual è il modo migliore per convertire a String
nel formato "2 gennaio 2010" a a Date
a Giava?
Alla fine, voglio suddividere il mese, il giorno e l'anno come numeri interi in modo da poterli utilizzare
Date date = new Date();
date.setMonth()..
date.setYear()..
date.setDay()..
date.setlong currentTime = date.getTime();
per convertire la data in ora.
Soluzione
Questo è il modo più difficile, e quelli java.util.Date
setter metodi sono stati deprecati dalla Java 1.1 (1997). semplicemente formattare la data utilizzando SimpleDateFormat
utilizzando un modello formato di corrispondenza dell'ingresso stringa .
Nel vostro caso specifico di "2 gennaio 2010", come la stringa di input:
- "Gennaio" è il mese intero testo, in modo da utilizzare il modello
MMMM
per esso - "2" è il mese giorno della breve, in modo da utilizzare il modello
d
per esso. - "2010" è l'anno a 4 cifre, in modo da utilizzare il modello
yyyy
per esso.
String string = "January 2, 2010";
DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
Date date = format.parse(string);
System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010
Si noti l'importanza dell'argomento esplicito Locale
. Se si omette, allora verrà utilizzato il predefinita locale che non è necessariamente l'inglese come utilizzato nel nome del mese della stringa di input. Se il locale non corrisponde con la stringa di input, allora si dovrebbe ottenere un confusamente java.text.ParseException
anche se, quando il modello di formato sembra valido.
Ecco un estratto di rilevanza da javadoc , elencando tutti i modelli di formato disponibili:
Letter Date or Time Component Presentation Examples
------ ---------------------- ------------------ -------------------------------------
G Era designator Text AD
y Year Year 1996; 96
Y Week year Year 2009; 09
M/L Month in year Month July; Jul; 07
w Week in year Number 27
W Week in month Number 2
D Day in year Number 189
d Day in month Number 10
F Day of week in month Number 2
E Day in week Text Tuesday; Tue
u Day number of week Number 1
a Am/pm marker Text PM
H Hour in day (0-23) Number 0
k Hour in day (1-24) Number 24
K Hour in am/pm (0-11) Number 0
h Hour in am/pm (1-12) Number 12
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
Z Time zone RFC 822 time zone -0800
X Time zone ISO 8601 time zone -08; -0800; -08:00
Si noti che i modelli sono case sensitive e che il testo base di schemi di quattro caratteri o più rappresentano la forma completa; altrimenti una forma breve o abbreviata viene utilizzata se disponibile. Così ad esempio, MMMMM
o più non è necessaria.
Ecco alcuni esempi di modelli SimpleDateFormat
valide per analizzare una stringa fino ad oggi:
Input string Pattern
------------------------------------ ----------------------------
2001.07.04 AD at 12:08:56 PDT yyyy.MM.dd G 'at' HH:mm:ss z
Wed, Jul 4, '01 EEE, MMM d, ''yy
12:08 PM h:mm a
12 o'clock PM, Pacific Daylight Time hh 'o''clock' a, zzzz
0:08 PM, PDT K:mm a, z
02001.July.04 AD 12:08 PM yyyyy.MMMM.dd GGG hh:mm aaa
Wed, 4 Jul 2001 12:08:56 -0700 EEE, d MMM yyyy HH:mm:ss Z
010704120856-0700 yyMMddHHmmssZ
2001-07-04T12:08:56.235-0700 yyyy-MM-dd'T'HH:mm:ss.SSSZ
2001-07-04T12:08:56.235-07:00 yyyy-MM-dd'T'HH:mm:ss.SSSXXX
2001-W27-3 YYYY-'W'ww-u
Una nota importante è che SimpleDateFormat
è non thread-safe. In altre parole, si dovrebbe mai dichiarare e assegnare come variabile statica o istanza e poi riutilizzarla da diversi metodi / fili. Si dovrebbe sempre crearlo nuovo nell'ambito di applicazione locale di metodo.
Java 8 update
Se vi capita di essere su Java 8 o più recente, quindi utilizzare DateTimeFormatter
(anche qui, clicca sul link per visualizzare tutti i formattatori predefiniti e modelli di formato disponibili; il tutorial è disponibile qui ). Questa nuova API è ispirata da JodaTime .
String string = "January 2, 2010";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse(string, formatter);
System.out.println(date); // 2010-01-02
Nota: se il vostro modello di formato accade per contenere la parte di tempo e, quindi utilizzare LocalDateTime#parse(text, formatter)
invece di LocalDate#parse(text, formatter)
. E, se il vostro modello formato accade per contenere il fuso orario e, quindi utilizzare ZonedDateTime#parse(text, formatter)
.
Ecco un estratto di rilevanza da javadoc , elencando tutti i modelli di formato disponibili:
Symbol Meaning Presentation Examples
------ -------------------------- ------------ ----------------------------------------------
G era text AD; Anno Domini; A
u year year 2004; 04
y year-of-era year 2004; 04
D day-of-year number 189
M/L month-of-year number/text 7; 07; Jul; July; J
d day-of-month number 10
Q/q quarter-of-year number/text 3; 03; Q3; 3rd quarter
Y week-based-year year 1996; 96
w week-of-week-based-year number 27
W week-of-month number 4
E day-of-week text Tue; Tuesday; T
e/c localized day-of-week number/text 2; 02; Tue; Tuesday; T
F week-of-month number 3
a am-pm-of-day text PM
h clock-hour-of-am-pm (1-12) number 12
K hour-of-am-pm (0-11) number 0
k clock-hour-of-am-pm (1-24) number 0
H hour-of-day (0-23) number 0
m minute-of-hour number 30
s second-of-minute number 55
S fraction-of-second fraction 978
A milli-of-day number 1234
n nano-of-second number 987654321
N nano-of-day number 1234000000
V time-zone ID zone-id America/Los_Angeles; Z; -08:30
z time-zone name zone-name Pacific Standard Time; PST
O localized zone-offset offset-O GMT+8; GMT+08:00; UTC-08:00;
X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30; -083015; -08:30:15;
x zone-offset offset-x +0000; -08; -0830; -08:30; -083015; -08:30:15;
Z zone-offset offset-Z +0000; -0800; -08:00;
Do atto che ha diversi formattatori predefiniti per i modelli più popolari. Così, invece di esempio DateTimeFormatter.ofPattern("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
, si potrebbe usare DateTimeFormatter.RFC_1123_DATE_TIME
. Questo è possibile perché sono, inAl contrario di SimpleDateFormat
, thread safe. Si potrebbe quindi anche definire il proprio, se necessario.
Per un particolare formato stringa di input, non è necessario utilizzare un DateTimeFormatter
esplicita: un ISO 8601 data , come 2016-09-26T17: 44: 57Z, può essere analizzato direttamente con LocalDateTime#parse(text)
in quanto utilizza già il ISO_LOCAL_DATE_TIME
formattatore. Allo stesso modo, LocalDate#parse(text)
analizza una data ISO, senza la componente temporale (vedi ISO_LOCAL_DATE
), e ZonedDateTime#parse(text)
analizza un data ISO con un offset e il fuso orario aggiunto (vedi ISO_ZONED_DATE_TIME
).
Altri suggerimenti
Ah sì, la discussione su Java Date, ancora una volta.Per gestire la manipolazione della data utilizziamo Data, Calendario, Calendario gregoriano, E SimpleDateFormat.Ad esempio, utilizzando la data di gennaio come input:
Calendar mydate = new GregorianCalendar();
String mystring = "January 2, 2010";
Date thedate = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(mystring);
mydate.setTime(thedate);
//breakdown
System.out.println("mydate -> "+mydate);
System.out.println("year -> "+mydate.get(Calendar.YEAR));
System.out.println("month -> "+mydate.get(Calendar.MONTH));
System.out.println("dom -> "+mydate.get(Calendar.DAY_OF_MONTH));
System.out.println("dow -> "+mydate.get(Calendar.DAY_OF_WEEK));
System.out.println("hour -> "+mydate.get(Calendar.HOUR));
System.out.println("minute -> "+mydate.get(Calendar.MINUTE));
System.out.println("second -> "+mydate.get(Calendar.SECOND));
System.out.println("milli -> "+mydate.get(Calendar.MILLISECOND));
System.out.println("ampm -> "+mydate.get(Calendar.AM_PM));
System.out.println("hod -> "+mydate.get(Calendar.HOUR_OF_DAY));
Quindi puoi manipolarlo con qualcosa del tipo:
Calendar now = Calendar.getInstance();
mydate.set(Calendar.YEAR,2009);
mydate.set(Calendar.MONTH,Calendar.FEBRUARY);
mydate.set(Calendar.DAY_OF_MONTH,25);
mydate.set(Calendar.HOUR_OF_DAY,now.get(Calendar.HOUR_OF_DAY));
mydate.set(Calendar.MINUTE,now.get(Calendar.MINUTE));
mydate.set(Calendar.SECOND,now.get(Calendar.SECOND));
// or with one statement
//mydate.set(2009, Calendar.FEBRUARY, 25, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND));
System.out.println("mydate -> "+mydate);
System.out.println("year -> "+mydate.get(Calendar.YEAR));
System.out.println("month -> "+mydate.get(Calendar.MONTH));
System.out.println("dom -> "+mydate.get(Calendar.DAY_OF_MONTH));
System.out.println("dow -> "+mydate.get(Calendar.DAY_OF_WEEK));
System.out.println("hour -> "+mydate.get(Calendar.HOUR));
System.out.println("minute -> "+mydate.get(Calendar.MINUTE));
System.out.println("second -> "+mydate.get(Calendar.SECOND));
System.out.println("milli -> "+mydate.get(Calendar.MILLISECOND));
System.out.println("ampm -> "+mydate.get(Calendar.AM_PM));
System.out.println("hod -> "+mydate.get(Calendar.HOUR_OF_DAY));
String str_date = "11-June-07";
DateFormat formatter;
Date date;
formatter = new SimpleDateFormat("dd-MMM-yy");
date = formatter.parse(str_date);
Con Java 8 otteniamo una nuova data / ora API ( JSR 310 ).
Il seguente modo può essere utilizzato per analizzare la data in Java 8 senza fare affidamento su Joda Time :
String str = "January 2nd, 2010";
// if we 2nd even we have changed in pattern also it is not working please workout with 2nd
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM Q, yyyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse(str, formatter);
// access date fields
int year = date.getYear(); // 2010
int day = date.getDayOfMonth(); // 2
Month month = date.getMonth(); // JANUARY
int monthAsInt = month.getValue(); // 1
LocalDate è lo standard di Java 8 classe per rappresentare una data (senza tempo). Se si vuole valori sintattici che contengono data e ora si dovrebbe usare LocalDateTime . Per i valori con fusi orari utilizzano ZonedDateTime . Entrambi forniscono un metodo simile a parse()
LocalDate
:
LocalDateTime dateWithTime = LocalDateTime.parse(strWithDateAndTime, dateTimeFormatter);
ZonedDateTime zoned = ZonedDateTime.parse(strWithTimeZone, zoneFormatter);
La lista dei caratteri di formattazione da DateTimeFormatter Javadoc :
All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters.
The following pattern letters are defined:
Symbol Meaning Presentation Examples
------ ------- ------------ -------
G era text AD; Anno Domini; A
u year year 2004; 04
y year-of-era year 2004; 04
D day-of-year number 189
M/L month-of-year number/text 7; 07; Jul; July; J
d day-of-month number 10
Q/q quarter-of-year number/text 3; 03; Q3; 3rd quarter
Y week-based-year year 1996; 96
w week-of-week-based-year number 27
W week-of-month number 4
E day-of-week text Tue; Tuesday; T
e/c localized day-of-week number/text 2; 02; Tue; Tuesday; T
F week-of-month number 3
a am-pm-of-day text PM
h clock-hour-of-am-pm (1-12) number 12
K hour-of-am-pm (0-11) number 0
k clock-hour-of-am-pm (1-24) number 0
H hour-of-day (0-23) number 0
m minute-of-hour number 30
s second-of-minute number 55
S fraction-of-second fraction 978
A milli-of-day number 1234
n nano-of-second number 987654321
N nano-of-day number 1234000000
V time-zone ID zone-id America/Los_Angeles; Z; -08:30
z time-zone name zone-name Pacific Standard Time; PST
O localized zone-offset offset-O GMT+8; GMT+08:00; UTC-08:00;
X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30; -083015; -08:30:15;
x zone-offset offset-x +0000; -08; -0830; -08:30; -083015; -08:30:15;
Z zone-offset offset-Z +0000; -0800; -08:00;
Mentre alcune delle risposte sono tecnicamente corretti, non sono consigliabili.
- Il java.util.Date e classi Calendario sono notoriamente fastidiosi. A causa di difetti nella progettazione e realizzazione, li evitare. Per fortuna abbiamo la nostra scelta di altre due librerie di data-ora eccellenti:
- Joda Time
Questo open-popolare biblioteca fonte free-of-costo può essere utilizzato in diverse versioni di Java. Molti esempi di utilizzo sono disponibili sul StackOverflow. Leggendo alcuni di questi vi aiuterà a comprendere meglio fino a velocità rapidamente. - java.time. * Pacchetto
Questa nuova serie di lezioni si ispira Joda-time e definito dalla JSR 310. queste classi sono costruiti in Java 8. un progetto è in corso per un backport queste classi per Java 7, ma che backport non è sostenuta da Oracle.
- Joda Time
- Come Kristopher Johnson correttamente osservato nel suo commento sulla questione, le altre risposte ignorano questioni vitali:
- Ora del giorno
Data ha sia una parte di data e una parte ora del giorno) - Fuso orario
L'inizio di una giornata dipende dal fuso orario. Se non si riesce a specificare un fuso orario, si applica il fuso orario predefinito della JVM. Ciò significa che il comportamento del codice può cambiare quando viene eseguito su altri computer o con un impostazione del fuso orario modificato. Probabilmente non è ciò che si desidera. - Locale
specifica lingua del Locale come interpretare le parole (nome del mese e del giorno) incontrate durante l'analisi. (La risposta da BalusC maniglie correttamente questo.) Inoltre, il Locale influisce sull'uscita alcuni formattatori quando si genera una rappresentazione di stringa la data-ora.
- Ora del giorno
Joda Time
Alcune note su Joda-follow.
Fuso orario
Joda-Time , un DateTime oggetto conosce veramente il proprio fuso orario assegnato. Questo contrasta la classe java.util.Date che sembra di avere un fuso orario, ma non lo fa.
Nota in codice di esempio come si passa un oggetto fuso orario al formattatore che analizza la stringa. Tale fuso orario viene utilizzato per interpretare tale data tempo come avvenuti in quel fuso orario. Quindi è necessario pensare e determinare il fuso orario rappresentato da quell'ingresso stringa.
Dal momento che non avete parte alcuna volta nella stringa di input, Joda Time assegna il primo momento della giornata del fuso orario specificato come il tempo del giorno. Di solito questo significa 00:00:00
ma non sempre, a causa di ora legale (DST) o altre anomalie. Tra l'altro, si può fare lo stesso per qualsiasi istanza DateTime chiamando withTimeAtStartOfDay
.
Formatter modello
I caratteri utilizzati nel modello di un formattatore sono simili in Joda-Time a quelli java.util.Date/Calendar ma non esattamente la stessa cosa. Leggere attentamente il documento.
Immutabilità
Noi di solito utilizzare le classi immutabili in Joda-Time. Invece di modificare un oggetto data-ora esistente, che noi chiamiamo metodi che creano una nuova istanza fresca sulla base del altro oggetto con la maggior parte degli aspetti copiati a meno che sono stati desiderati alterazioni. Un esempio è la chiamata a withZone
nell'ultima riga sottostante. Immutabilità aiuta a rendere Joda Time molto thread-safe, e può anche fare un po 'di lavoro più chiaro.
conversione
Sarà necessario java.util.Date oggetti per l'uso con altre classi / quadro che non conoscono gli oggetti Joda-Time. Per fortuna,è molto facile per muoversi avanti e indietro.
Andando da un oggetto java.util.Date (qui chiamato date
) per Joda Time DateTime ...
org.joda.time.DateTime dateTime = new DateTime( date, timeZone );
Andando nella direzione opposta da Joda-Time a un oggetto java.util.Date ...
java.util.Date date = dateTime.toDate();
Esempio di codice
String input = "January 2, 2010";
java.util.Locale locale = java.util.Locale.US;
DateTimeZone timeZone = DateTimeZone.forID( "Pacific/Honolulu" ); // Arbitrarily chosen for example.
DateTimeFormatter formatter = DateTimeFormat.forPattern( "MMMM d, yyyy" ).withZone( timeZone ).withLocale( locale );
DateTime dateTime = formatter.parseDateTime( input );
System.out.println( "dateTime: " + dateTime );
System.out.println( "dateTime in UTC/GMT: " + dateTime.withZone( DateTimeZone.UTC ) );
Quando run ...
dateTime: 2010-01-02T00:00:00.000-10:00
dateTime in UTC/GMT: 2010-01-02T10:00:00.000Z
Mentre su come affrontare con la classe SimpleDateFormat, è importante ricordare che data non è thread-safe e non è possibile condividere un singolo oggetto Date con più thread.
Inoltre v'è grande differenza tra "m" e "M" in cui piccolo caso viene utilizzato per i minuti e la capitale caso viene utilizzato per mese. Lo stesso con "d" e "D". Ciò può causare errori sottili che spesso vengono trascurati. Vedere Javadoc o Guida per convertire stringa fino ad oggi in Java per maggiori dettagli.
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date;
try {
date = dateFormat.parse("2013-12-4");
System.out.println(date.toString()); // Wed Dec 04 00:00:00 CST 2013
String output = dateFormat.format(date);
System.out.println(output); // 2013-12-04
}
catch (ParseException e) {
e.printStackTrace();
}
Funziona bene per me.
Inoltre, SimpleDateFormat non è disponibile con alcune delle tecnologie lato client, come GWT .
E 'una buona idea di andare per Calendar.getInstance (), e la vostra esigenza è quella di confrontare due date; andare per lunga data.
Semplici due formattatori abbiamo usato:
- Quale data formato vogliamo?
- Quale formato della data è in realtà presente?
Si analizza la data completa nel formato tempo:
date="2016-05-06 16:40:32";
public static String setDateParsing(String date) throws ParseException {
// This is the format date we want
DateFormat mSDF = new SimpleDateFormat("hh:mm a");
// This format date is actually present
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd hh:mm");
return mSDF.format(formatter.parse(date));
}
Il mio programma di test umili. Io lo uso per giocare con il formattatore e lunghe date che trovo nei log-files (ma chi li ha messi lì ...) look-up.
Il mio programma di test:
package be.test.package.time;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
public class TimeWork {
public static void main(String[] args) {
TimeZone timezone = TimeZone.getTimeZone("UTC");
List<Long> longs = new ArrayList<>();
List<String> strings = new ArrayList<>();
//Formatting a date needs a timezone - otherwise the date get formatted to your system time zone.
//Use 24h format HH. In 12h format hh can be in range 0-11, which makes 12 overflow to 0.
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss.SSS");
formatter.setTimeZone(timezone);
Date now = new Date();
//Test dates
strings.add(formatter.format(now));
strings.add("01-01-1970 00:00:00.000");
strings.add("01-01-1970 00:00:01.000");
strings.add("01-01-1970 00:01:00.000");
strings.add("01-01-1970 01:00:00.000");
strings.add("01-01-1970 10:00:00.000");
strings.add("01-01-1970 12:00:00.000");
strings.add("01-01-1970 24:00:00.000");
strings.add("02-01-1970 00:00:00.000");
strings.add("01-01-1971 00:00:00.000");
strings.add("01-01-2014 00:00:00.000");
strings.add("31-12-1969 23:59:59.000");
strings.add("31-12-1969 23:59:00.000");
strings.add("31-12-1969 23:00:00.000");
//Test data
longs.add(now.getTime());
longs.add(-1L);
longs.add(0L); //Long date presentation at - midnight 1/1/1970 UTC - The timezone is important!
longs.add(1L);
longs.add(1000L);
longs.add(60000L);
longs.add(3600000L);
longs.add(36000000L);
longs.add(43200000L);
longs.add(86400000L);
longs.add(31536000000L);
longs.add(1388534400000L);
longs.add(7260000L);
longs.add(1417706084037L);
longs.add(-7260000L);
System.out.println("===== String to long =====");
//Show the long value of the date
for (String string: strings) {
try {
Date date = formatter.parse(string);
System.out.println("Formated date : " + string + " = Long = " + date.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
}
System.out.println("===== Long to String =====");
//Show the date behind the long
for (Long lo : longs) {
Date date = new Date(lo);
String string = formatter.format(date);
System.out.println("Formated date : " + string + " = Long = " + lo);
}
}
}
I risultati del test:
===== String to long =====
Formated date : 05-12-2014 10:17:34.873 = Long = 1417774654873
Formated date : 01-01-1970 00:00:00.000 = Long = 0
Formated date : 01-01-1970 00:00:01.000 = Long = 1000
Formated date : 01-01-1970 00:01:00.000 = Long = 60000
Formated date : 01-01-1970 01:00:00.000 = Long = 3600000
Formated date : 01-01-1970 10:00:00.000 = Long = 36000000
Formated date : 01-01-1970 12:00:00.000 = Long = 43200000
Formated date : 01-01-1970 24:00:00.000 = Long = 86400000
Formated date : 02-01-1970 00:00:00.000 = Long = 86400000
Formated date : 01-01-1971 00:00:00.000 = Long = 31536000000
Formated date : 01-01-2014 00:00:00.000 = Long = 1388534400000
Formated date : 31-12-1969 23:59:59.000 = Long = -1000
Formated date : 31-12-1969 23:59:00.000 = Long = -60000
Formated date : 31-12-1969 23:00:00.000 = Long = -3600000
===== Long to String =====
Formated date : 05-12-2014 10:17:34.873 = Long = 1417774654873
Formated date : 31-12-1969 23:59:59.999 = Long = -1
Formated date : 01-01-1970 00:00:00.000 = Long = 0
Formated date : 01-01-1970 00:00:00.001 = Long = 1
Formated date : 01-01-1970 00:00:01.000 = Long = 1000
Formated date : 01-01-1970 00:01:00.000 = Long = 60000
Formated date : 01-01-1970 01:00:00.000 = Long = 3600000
Formated date : 01-01-1970 10:00:00.000 = Long = 36000000
Formated date : 01-01-1970 12:00:00.000 = Long = 43200000
Formated date : 02-01-1970 00:00:00.000 = Long = 86400000
Formated date : 01-01-1971 00:00:00.000 = Long = 31536000000
Formated date : 01-01-2014 00:00:00.000 = Long = 1388534400000
Formated date : 01-01-1970 02:01:00.000 = Long = 7260000
Formated date : 04-12-2014 15:14:44.037 = Long = 1417706084037
Formated date : 31-12-1969 21:59:00.000 = Long = -7260000
È possibile utilizzare SimpleDateformat per modificare la stringa fino ad oggi
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String strDate = "2000-01-01";
Date date = new Date(sdf.parse(strDate).getTime());
Android
Calendar.getInstance (). GetTime () dà
Thu Jul 26 15:54:13 GMT+05:30 2018
Usa
String oldDate = "Thu Jul 26 15:54:13 GMT+05:30 2018";
DateFormat format = new SimpleDateFormat("EEE LLL dd HH:mm:ss Z yyyy");
Date updateLast = format.parse(oldDate);
Prova questo
String date = get_pump_data.getString("bond_end_date");
DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date datee = (Date)format.parse(date);