I’m developing an Android app that uses a database, every time that the user insert a new register the current data and time is save in the db using
Calendar cal = Calendar.getInstance();
So, When I retrieve the data from the db, got a String like this:
java.util.GregorianCalendar[time=1496007575129,areFieldsSet=true,lenient=true,zone=America/Mexico_City,firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2017,MONTH=4,WEEK_OF_YEAR=22,WEEK_OF_MONTH=5,DAY_OF_MONTH=28,DAY_OF_YEAR=148,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=39,SECOND=35,MILLISECOND=129,ZONE_OFFSET=-21600000,DST_OFFSET=3600000]
The problem comes when I try convert that String using SimpleDateFormat.parse to display it in a RecyclerView, I get always the same date: 09/04/2017.
This is the code in my RecViewAdapter.java:
@Override public void onBindViewHolder(ViewHolder holder,int position){ items.moveToPosition(position); String s,d,p,f; s = items.getString(ConsultaTomas.SISTOLICA); holder.systolica.setText(s); d = items.getString(ConsultaTomas.DIASTOLICA); holder.diastolica.setText(d); p = items.getString(ConsultaTomas.PULSO); holder.pulso.setText(p); f = items.getString(ConsultaTomas.FECHA); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); try { holder.fecha.setText(sdf.format(sdf.parse(f))); }catch (ParseException e){ Log.d("PARSINGFECHA","Error al parcear fecha"); } }
The other data is showed correctly in the RecView and the Calendar String are all diferent, so there is not the same date/hour in these strings. So, the question is:
How can I Convert Calendar.toString()
into date using SimpleDateFormat.parse()
?
This is the result running the app in a real device:
Advertisement
Answer
You need to modify the way you store the Calendar
, call getTime()
and format it as desired to begin with. For example,
Calendar cal = Calendar.getInstance(); DateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); System.out.println(sdf.format(cal.getTime()));