示例,从1分钟前开始 我使用Api服务的api和时间响应结果:
{
"date_time":"2016-03-10 03:20:30"
}
请逐步讨论,如果可以的话,如何以阿拉伯语格式编程显示它 منذ15دقيقة
列表视图适配器中的日期代码
TextView date_time = (TextView) convertView.findViewById(R.id.date_time_list_home);
date_time.setText(m.dateTime());
答案 0 :(得分:1)
首先,对于Android上的任何日期/时间操作,我强烈建议您使用ThreeTenABP
库。这是Java 8 java.time.*
包的后端,避开了令人失望的java.util.Date
和java.util.Calendar
类。
要使用此库解析"date_time"
,您可以使用以下代码:
// I set the ZoneId to systemDefault, but you should really use the ZoneId of the server
DateTimeFormatter formatter = DateTimeFormatter
.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.getDefault())
.withZone(ZoneId.systemDefault());
Instant instant = formatter.parse(m.dateTime(), Instant.FROM);
Android提供DateUtils
类来显示日期和时间信息。此课程考虑了Locale
和12/24小时格式等系统设置。因此,如果设备的Locale
设置为任何阿拉伯语区域设置(ar_
),则日期/时间将以适合其的格式显示。
String display = DateUtils.getRelativeTimeSpanString(
instant.toEpochMilli(),
Instant.now().toEpochMilli(),
DateUtils.MINUTE_IN_MILLIS);
date_time.setText(display);
getRelativeTimeSpanString
中的最后一个参数是最低分辨率,因此设置DateUtils.MINUTE_IN_MILLIS
不会显示以秒为单位的差异。
如果您坚持使用Java 7类,则使用它们的代码相同:
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse(m.dateTime());
String display = DateUtils.getRelativeTimeSpanString(
date.getTime(),
new Date(),
DateUtils.MINUTE_IN_MILLIS);
date_time.setText(display);
如果您需要"过渡解决方案"超过一天(即您希望显示过去一天以上的日期/时间为" ...天前和#34;)您可以使用DateUtils.getRelativeDateTimeString()
方法代替:
String display = DateUtils.getRelativeDateTimeString(
mContext,
instant.toEpochMilli(),
DateUtils.MINUTE_IN_MILLIS,
DateUtils.WEEK_IN_MILLIS,
DateUtils.FORMAT_ABBREV_ALL);
任何比transitionResolution
更远的日期(在这种情况下,一周)将以适当的日期格式显示,而不是相对格式。 minResolution
和transitionResolution
可以是任意long
值,DateUtils
包含其他方便的常量,例如MONTH_IN_MILLIS
和YEAR_IN_MILLIS
。
最后一个参数采用整数来格式化标志。这些标志会覆盖DateUtils
为每个Locale
使用的默认格式;查看文档以获取更多信息。