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