Zapisuję aktualny czas w bazie danych za każdym razem, gdy aplikacja jest uruchamiana przez użytkownika.
Calendar c = Calendar.getInstance();
String str = c.getTime().toString();
Log.i("Current time", str);
Po stronie bazy danych przechowuję aktualny czas jako string (jak widać w powyższym kodzie). Dlatego kiedy ładuję go z bazy danych, muszę rzucić go na obiekt Date. Widziałem kilka próbek, w których wszystkie używały „DateFormat”. Ale mój format jest dokładnie taki sam jak format daty. Więc myślę, że nie ma potrzeby używania „DateFormat”. Czy mam rację?
Czy istnieje możliwość bezpośredniego rzutowania tego ciągu na obiekt Date? Chcę porównać ten zapisany czas z aktualnym czasem.
Dzięki
======> aktualizacja
Dzięki, drodzy. Użyłem następującego kodu:
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()
rzuca wyjątekSimpleDateFormat dateFormat =new SimpleDateFormat(""yyyy-MM-dd'T'HH:mm:ss'Z'"", Locale.getDefault());
źródło
przy użyciu klasy SimpleDateFormat lub DateFormat do
np
źródło
Środa, 14 marca, 13:30:00 UTC 2018
14 marca 2018 roku
źródło
Dobrym pomysłem może być ostrożność z lokalizacją, od której
c.getTime().toString();
zależy.Jednym z pomysłów jest przechowywanie czasu w sekundach (np. Czas UNIX ). Jako że
int
możesz go łatwo porównać, a następnie po prostu przekonwertować go na łańcuch podczas wyświetlania go użytkownikowi.źródło
źródło