Android, Как преобразовать строку в Date?
Я сохраняю текущее время в базе данных каждый раз, когда приложение запускается пользователем.
Calendar c = Calendar.getInstance();
String str = c.getTime().toString();
Log.i("Current time", str);
В стороне базы данных я сохраняю текущее время как строку (как вы видите в приведенном выше коде). Поэтому, когда я загружаю его из базы данных, мне нужно передать его в объект Date. Я видел несколько образцов, которые все они использовали "DateFormat". Но мой формат точно такой же, как формат даты. Итак, я думаю, что нет необходимости использовать "DateFormat". Я прав?
Есть ли какие-либо действия для прямого создания этого объекта String to 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;
}
Ответы
Ответ 1
От строки до даты
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();
}
От даты до строки
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();
}
Ответ 2
SimpleDateFormat dateFormat = new SimpleDateFormat("DD-MM-YYYY");
Date d = dateFormat.parse(datestring)
Ответ 3
используя класс 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
}
Ответ 4
Было бы неплохо быть осторожным с Locale, от которого зависит c.getTime().toString();
.
Одной из идей является сохранение времени в секундах (например, время UNIX). Как int
вы можете легко сравнить его, а затем просто преобразуете его в строку при отображении его пользователю.
Ответ 5
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);