web-dev-qa-db-fra.com

Android, Comment puis-je convertir une chaîne en date?

Je stocke l'heure actuelle dans la base de données chaque fois que l'application démarre par utilisateur.

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

Dans la base de données, je stocke l'heure actuelle sous forme de chaîne (comme vous le voyez dans le code ci-dessus). Par conséquent, lorsque je le charge depuis une base de données, je dois le convertir en objet Date. J'ai vu des échantillons qu'ils avaient tous utilisés avec "DateFormat". Mais mon format est exactement le même que le format Date. Donc, je pense qu'il n'est pas nécessaire d'utiliser "DateFormat". Ai-je raison?

Est-il possible de convertir directement cet objet String to Date? Je veux comparer cette heure stockée avec l'heure actuelle.

Merci

======> mise à jour

Merci chers gars. J'ai utilisé le code suivant:

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;            

   }
121
Hesam

De la chaîne à la date

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();  
}

De la date à la chaîne

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();  
}
362
user370305
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date d = dateFormat.parse(datestring)
9
Hiren Dabhi

en utilisant les classes SimpleDateFormat ou DateFormat

par exemple.

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
}
6
Pratik
     import Java.text.ParseException;
     import Java.text.SimpleDateFormat;
     import Java.util.Date;
     public class MyClass 
     {
     public static void main(String args[]) 
     {
     SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");

     String dateInString = "Wed Mar 14 15:30:00 EET 2018";

     SimpleDateFormat formatterOut = new SimpleDateFormat("dd MMM yyyy");


     try {

        Date date = formatter.parse(dateInString);
        System.out.println(date);
        System.out.println(formatterOut.format(date));

         } catch (ParseException e) {
        e.printStackTrace();
         }
    }
    }

voici votre objet Date date et le résultat est:

mer 14 mars 13:30:00 UTC 2018

14 mars 2018

2
Janku
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);
1
paolixx

Ce pourrait être une bonne idée de faire attention aux paramètres régionaux sur lesquels c.getTime().toString(); dépend.

Une idée est de stocker le temps en secondes (par exemple heure UNIX ). En tant que int, vous pouvez facilement le comparer, puis vous le convertissez simplement en chaîne lors de l'affichage à l'utilisateur.

1
JOG