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 параметра как:

  1. Система Текущее время в миллис.
  2. Часовой пояс устройства
  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);
Другие вопросы по тегам