2011-12-20 24 views
83

Guardo la hora actual en la base de datos cada vez que la aplicación comienza por el usuario.Android, ¿cómo puedo convertir cadena hasta la fecha?

Calendar c = Calendar.getInstance(); 
    String str = c.getTime().toString(); 
    Log.i("Current time", str); 

En el lado de la base de datos, guardo la hora actual como una cadena (como se ve en el código anterior). Por lo tanto, cuando lo cargo desde la base de datos, necesito convertirlo en el objeto Date. Vi algunas muestras que todos ellos habían usado "DateFormat". Pero mi formato es exactamente igual al formato de fecha. Por lo tanto, creo que no es necesario usar "DateFormat". ¿Estoy en lo cierto?

¿Hay alguna forma de lanzar directamente este objeto String to Date? Quiero comparar este tiempo almacenado con la hora actual.

Gracias

======> actualización

Gracias queridos chicos. Solía ​​siguiente código:

private boolean isPackageExpired(String date){ 
     boolean isExpired=false; 
     Date expiredDate = stringToDate(date, "EEE MMM d HH:mm:ss zz yyyy");   
     if (new Date().after(expiredDate)) isExpired=true; 

     return isExpired; 
    } 

    private Date stringToDate(String aDate,String aFormat) { 

     if(aDate==null) return null; 
     ParsePosition pos = new ParsePosition(0); 
     SimpleDateFormat simpledateformat = new SimpleDateFormat(aFormat); 
     Date stringDate = simpledateformat.parse(aDate, pos); 
     return stringDate;    

    } 

Respuesta

251

de String a fecha

String dtStart = "2010-10-15T09:27:37Z"; 
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
try { 
    Date date = format.parse(dtStart); 
    System.out.println(date); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

Desde la fecha en cadena

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
try { 
    Date date = new Date(); 
    String dateTime = dateFormat.format(date); 
    System.out.println("Current Date Time : " + dateTime); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
+0

Exactamente: es mejor aplicar algún formulario estándar a la cadena de fecha antes de almacenarlo en la base de datos. En este caso http://en.wikipedia.org/wiki/ISO_8601 –

+0

Para una solución más estrictamente funcional en "cadena hasta la fecha", es conveniente agregar "format.setLenient (false);" antes del intento ... atrapar bloque. De esta forma, la comprobación de una fecha de cadena anteriormente correcta será mejor. – Alecs

6
SimpleDateFormat dateFormat = new SimpleDateFormat("DD-MM-YYYY"); 
Date d = dateFormat.parse(datestring) 
+2

¿no se supone que se debe analizar Cadena como variable? Porque de esta manera, está tratando de analizar la palabra "cadena". –

+0

YYYY y DD están equivocados, yyyy y dd son verdaderos –

5

usando SimpleDateFormat o DateFormat clase a través de

para, por ejemplo,

try{ 
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); // here set the pattern as you date in string was containing like date/month/year 
Date d = sdf.parse("20/12/2011"); 
}catch(ParseException ex){ 
    // handle parsing exception if date string was different from the pattern applying into the SimpleDateFormat contructor 
} 
0

Podría ser una buena idea tener cuidado con la configuración regional de la que depende c.getTime().toString();.

Una idea es almacenar el tiempo en segundos (por ejemplo, UNIX time). Como int, puede compararlo fácilmente y luego simplemente convertirlo en cadena al mostrarlo al usuario.

0
String source = "24/10/17"; 

String[] sourceSplit= source.split("/"); 

int anno= Integer.parseInt(sourceSplit[2]); 
int mese= Integer.parseInt(sourceSplit[1]); 
int giorno= Integer.parseInt(sourceSplit[0]); 

    GregorianCalendar calendar = new GregorianCalendar(); 
    calendar.set(anno,mese-1,giorno); 
    Date data1= calendar.getTime(); 
    SimpleDateFormat myFormat = new SimpleDateFormat("20yy-MM-dd"); 

    String dayFormatted= myFormat.format(data1); 

    System.out.println("data formattata,-->"+dayFormatted); 
Cuestiones relacionadas