我也是Firebase和android的新手。 在我的应用程序中,学生可以分享他的有关课程提纲的问答。 为此,我在firebase数据库中设置了时间时间和日期字符串,并通过POJO类以String格式检索了日期和时间,例如Date:06-April-2019和time:01:38:24。 直到现在我通过model.getTime和model.getDate在TextView中使用setText。 所以这就像一个更新(TextView)2019年4月6日01:38:24 现在我想像分钟前,小时前,天前,月前,一年前一样,通过Timeago对其进行更改
对不起,英语不好。 和thanx提前
protected void onBindViewHolder(@NonNull UserViewHolder holder, int position, @NonNull final question model)
{
final String PostKey=getRef(position).getKey();//get key by this line
holder.userfullname.setText(model.getFirstname()+" "+model.getLastname());
holder.time.setText(" "+model.getTime());//***TextView 06-April-2019***
holder.date.setText(" "+model.getDate());//*TextView 01:38:24*
holder.description.setText(model.getDescription());
}
答案 0 :(得分:0)
使用System.currentTimeMillis();您可以获得自1970年1月1日以来经过的毫秒数。
因此,您可以通过适配器中的2个自定义功能来实现。
第一个使用您的日期和时间并将其转换为毫秒。
private long millisFromDateAndTime(String date, String time){
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMMM-yyyy");
SimpleDateFormat timeFormat = new SimpleDateFormat("kk:mm:ss");
try
{
Date mDate = dateFormat.parse(date);
Date mTime = timeFormat.parse(time);
long dateInMilliseconds = mDate.getTime();
long timeInMilliseconds = mTime.getTime();
return timeInMilliseconds + dateInMilliseconds;
}
catch (ParseException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
第二个函数从发帖后的毫秒数开始,并返回包含多少时间的字符串。
private String timeAgo(long startTime){
long currentTime = System.currentTimeMillis();
long timeDifference = (currentTime - startTime) / 1000;
Log.d("!!!!DIFF!!!!!!", String.valueOf(timeDifference));
long timeUnit;
if(timeDifference < 60){
timeUnit = DateUtils.SECOND_IN_MILLIS;
} else if(timeDifference < 3600){
timeUnit = DateUtils.MINUTE_IN_MILLIS;
} else if (timeDifference < 86400){
timeUnit = DateUtils.HOUR_IN_MILLIS;
}else if (timeDifference < 31536000){
timeUnit = DateUtils.DAY_IN_MILLIS;
} else {
timeUnit = DateUtils.YEAR_IN_MILLIS;
}
CharSequence timeAgo = DateUtils.getRelativeTimeSpanString(startTime, currentTime,
timeUnit, DateUtils.FORMAT_ABBREV_RELATIVE);
return String.valueOf(timeAgo);
}
您可以将这两个功能放置在适配器的底部。
最后,您将在onBindViewholder中使用此功能。
protected void onBindViewHolder(@NonNull UserViewHolder holder, int position, @NonNull final question model)
{
final String PostKey=getRef(position).getKey();//get key by this line
holder.userfullname.setText(model.getFirstname()+" "+model.getLastname());
//Convert your Date and Time to milliseconds
long startTime = millisFromDateAndTime(model.getDate(), model.getTime);
//Set the timeAgo text in the Textview of your choice
holder.time.setText(timeAgo(startTime));
holder.description.setText(model.getDescription());
}
祝你好运,告诉我是否有效。