Android:在聊天中使用joda显示设备时间

时间:2013-12-20 10:28:42

标签: android timestamp chat jodatime

我需要在聊天信使中显示设备时间,但它只显示区域时间。如果我更改设备时间,两个时间都不一样。

我想在我使用joda的Timestamp中显示当前的设备时间。请检查我的代码。

        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 个答案:

答案 0 :(得分: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;
    }   
    
  4. 要调用此方法,您必须以编程方式获取设备时区:

    Calendar calendar = Calendar.getInstance();
    TimeZone zone = calendar.getTimeZone();   
    String timeZone = zone.getID();
    

    现在调用此方法:

      String msgAtTime =  getFormattedTime(System.currentTimeInMillis(), timezone, "MMM dd, hh:mm a");
    

    现在,在textview中设置return String。

        msgTextVies.setText(msgAtTime);