Android: отображение времени устройства с помощью joda в чате
Мне нужно показать время устройства в чате, но оно показывает только время зоны. Если я изменю время устройства, оба времени будут не одинаковыми.
Я хочу отобразить текущее время устройства в Timestamp, который я использовал joda. Пожалуйста, проверьте мой код.
DateTime createdAt = message.getCreatedAt();
DateTimeZone dateTimeZone= DateTimeZone.getDefault();
DateTimeFormatter fmtTimeBubble = DateTimeFormat.forPattern(LBUtil.TIME_AM_PM_FORMAT).withZone(dateTimeZone);
viewHolder.dateTime.setText(fmtTimeBubble.print(createdAt));
1 ответ
Решение
Используйте метод ниже для получения времени в соответствии с любым часовым поясом, вы должны передать 3 параметра как:
- Система Текущее время в миллис.
- Часовой пояс устройства
А формат времени вроде (
MMM dd, hh:mm a
)public static String getFormatedTime(long dateTime,String timeZone, String format){ String time = null; try{ Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(dateTime); SimpleDateFormat sdf = new SimpleDateFormat(format); sdf.setTimeZone(TimeZone.getTimeZone(timeZone)); time = sdf.format(cal.getTime()); } catch(Exception e){ //logger.log(Level.SEVERE,"\n ERROR**********, Exception during get formated time: "+e+"\n"); } return time; }
Для вызова этого метода вы должны получить часовой пояс устройства программно:
Calendar calendar = Calendar.getInstance();
TimeZone zone = calendar.getTimeZone();
String timeZone = zone.getID();
Теперь вызовите этот метод:
String msgAtTime = getFormattedTime(System.currentTimeInMillis(), timezone, "MMM dd, hh:mm a");
Теперь установите возвращаемую строку в textview
,
msgTextVies.setText(msgAtTime);