Я сохраняю текущее время в базе данных каждый раз, когда приложение запускается пользователем.
Calendar c = Calendar.getInstance();
String str = c.getTime().toString();
Log.i("Current time", str);
На стороне базы данных я храню текущее время в виде строки (как вы видите в коде выше). Поэтому, когда я загружаю его из базы данных, мне нужно преобразовать его в объект Date. Я видел несколько примеров, когда все они использовали DateFormat. Но мой формат точно такой же, как формат даты. Так что я думаю, что нет необходимости использовать DateFormat. Я прав?
Есть ли способ напрямую преобразовать этот объект String в Date? Я хочу сравнить это сохраненное время с текущим временем.
Благодарность
======> обновить
Спасибо, дорогие ребята. Я использовал следующий код:
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;
}
SimpleDateFormat.format()
это является исключениемSimpleDateFormat dateFormat =new SimpleDateFormat(""yyyy-MM-dd'T'HH:mm:ss'Z'"", Locale.getDefault());
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy"); Date d = dateFormat.parse(datestring)
источник
с использованием класса SimpleDateFormat или DateFormat через
например, для
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(); } } }
Ср, 14 мар, 13:30:00 UTC 2018
14 марта 2018 г.
источник
Было бы неплохо быть осторожным с Локалем, от которого
c.getTime().toString();
зависит.Одна из идей - хранить время в секундах (например, время UNIX ). В качестве
int
вы можете легко сравнить его, а затем вы просто преобразовать его в строку при выводе его пользователю.источник
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);
источник