java - 时间戳检索方法
问题描述
我现在正在编写一种方法来timestamp
区分帖子上传到 Firebase 的时间和今天的日期/时间。根据我在这里观看的视频和其他帖子,这是getTimeDate
我想出的方法。我把它传给我的ViewHolder
,虽然我得到一个E/: getTimeDate: ParseException: Unparseable date: "1576534039437"
. 以为不错,今天才回来。
我的代码有什么问题?
目标是让TextView
用户说出 6 小时前、32 分钟前、4 天前等内容。
PostAdapter.java
if ("".equals(post.getTimestamp())) {
holder.timestamp.setVisibility(View.GONE);
} else {
if (post.getPostid() != null) {
holder.timestamp.setVisibility(View.VISIBLE);
String timestampDifference = getTimeDate();
if (!timestampDifference.equals("0")) {
holder.timestamp.setText(timestampDifference + " days ago");
} else {
holder.timestamp.setText("Today");
}
}
}
int position;
//TIMESTAMP
private String getTimeDate() {
final Post post = mPost.get(position);
final String TAG = "";
String difference = "";
Calendar calendar = Calendar.getInstance();
//Date format
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
//Today's date
Date today = calendar.getTime();
simpleDateFormat.format(today);
Date timestamp;
try {
if (post.getTimestamp() != null) {
timestamp = simpleDateFormat.parse(post.getTimestamp().toString());
difference = String.valueOf(Math.round(((today.getTime() - timestamp.getTime()) / 1000 / 60 / 60 / 24)));
}
} catch (ParseException e) {
Log.e(TAG, "getTimeDate: ParseException: " + e.getMessage());
difference = "0";
}
return difference;
}
解决方案
这是适用于这种情况的解决方案。
private Date date1, date2;
.
.
.
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
.
date1 = new Date(); // current datetime
date2 = simpleDateFormat.parse(datetimeFromPost); // date in string format from post.
.
printDifference(date1,date2);
public void printDifference(Date startDate, Date endDate) {
//milliseconds
long different = endDate.getTime() - startDate.getTime();
long secondsInMilli = 1000;
long minutesInMilli = secondsInMilli * 60;
long hoursInMilli = minutesInMilli * 60;
long daysInMilli = hoursInMilli * 24;
long elapsedDays = different / daysInMilli;
different = different % daysInMilli;
long elapsedHours = different / hoursInMilli;
different = different % hoursInMilli;
long elapsedMinutes = different / minutesInMilli;
different = different % minutesInMilli;
long elapsedSeconds = different / secondsInMilli;
String difference= "";
String diffDays = "";
String diffHours = "";
String diffMins = "00:";
String diffSeconds = "00";
if (elapsedDays > 0) {
if (elapsedDays == 1) {
diffDays = elapsedDays + " day ";
} else {
diffDays = elapsedDays + " days ";
}
}
if (elapsedHours > 0) {
diffHours = String.format("%02d", elapsedHours) + ":";
}
if (elapsedMinutes > 0) {
diffMins = String.format("%02d", elapsedMinutes) + ":";
}
if (elapsedSeconds > 0) {
diffSeconds = String.format("%02d", elapsedSeconds) + "";
}
difference= diffDays + diffHours + diffMins + diffSeconds + "ago";
// here is the difference between datetime in "00:00:00 ago"
}
推荐阅读
- twig - 设置 Twig 变量
- serial-port - 使用串行外设接口 (SPI) 同时与多个从机通信
- android - 我想从android将json文件发送到我的服务器我应该在doInBackground方法中做什么?
- mysql - 使用 Laravel 将日期值插入日期字段
- android - firebase 项目中是否需要 dagger2?
- java - 使用 http.get 请求传递正文
- javascript - 通过循环问题的键绑定 ng 模型
- javascript - 如何在n位置找到2位数字的所有排列
- batch-file - 变量在 For 循环中不回显
- python - 多次指定相同的选项以收集多个子值(python argparse 子命令)