2011-12-20 2 views
83

Я сохраняю текущее время в базе данных каждый раз, когда приложение запускается пользователем.Android, как я могу преобразовать String в 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;    

    } 

ответ

251

От строки до Дата

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

Точно - лучше применить стандартную форму к строке даты перед ее хранением в базе данных. В этом случае http://en.wikipedia.org/wiki/ISO_8601 –

+0

Для более строго работающего решения по «строке на дату» удобно добавить «format.setLenient (false)»; перед попыткой ... catch block. Таким образом, проверка правильной даты строки будет лучше. – Alecs

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

Нельзя анализировать строку как переменную? Потому что он пытается разобрать слово «строка». –

+0

YYYY и DD ошибочны, yyyy и dd истинны –

5

использованием 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 
} 
0

Это может быть хорошей идеей, чтобы быть осторожным с Locale, на которой c.getTime().toString(); зависит.

Идея состоит в том, чтобы хранить время в секундах (например, UNIX time). Как int вы можете легко сравнить его, а затем просто преобразовать его в строку при отображении ее пользователю.

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); 
Смежные вопросы