我需要在聊天信使中显示设备时间,但它只显示区域时间。如果我更改设备时间,两个时间都不一样。
我想在我使用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));
答案 0 :(得分: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
中设置return String。
msgTextVies.setText(msgAtTime);