be careful because it is deprecated............
بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
نمایش زمان به صورت دو دقیقه پیش ، دو ساعت پیش و ...
مدیریت گفتگو
آخرین تغییر: 7 سال پیش
سلام
میخواستم بدونم چطور میشه نمایش رو به صورت دو دقیقه پیش یا دو ساعت پیش از این مدل به دست اورد . مثلا یکی یه پیام میزاره حدودا دو دقیقه پیش این رو چطور نمایش میدن؟
با تشکر
پاسخها 3
کد کامل چیزی که میخواین:
/**
* return format: yyyy/MM/dd hh:mm
*
*/
public static String getCurrentDate_MiladiWithTime() {
Calendar cal = Calendar.getInstance();
int Day = cal.get(Calendar.DAY_OF_MONTH);
int Month = cal.get(Calendar.MONTH) + 1;
int Year = cal.get(Calendar.YEAR);
Time now = new Time(Time.getCurrentTimezone());
now.setToNow();
String today = Year + "/" + Month + "/" + Day + " " + now.format("%k:%M");
return today;
}
/**
* form of input data:yyyy/MM/dd HH:mm;
*
*/
public static String calculate_new(String targetDate) {
Log.i("LOG", targetDate);
String nowDate = getCurrentDate_MiladiWithTime();
//HH converts hour in 24 hours format (0-23), day calculation
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm");
Date d1 = null;
Date d2 = null;
String returnValue = "";
try {
d1 = format.parse(targetDate);
d2 = format.parse(nowDate);
//in milliseconds
long diff = (d2.getTime() - d1.getTime()) / 1000;
int minute = 60;
int hour = minute * 60;
int day = hour * 24;
int month = day * 30;
int year = day * 365;
int diffYears = (int) Math.floor(diff / year);
diff -= diffYears * year;
int diffMonthes = (int) Math.floor(diff / month);
diff -= diffMonthes * month;
int diffDays = (int) Math.floor(diff / day);
diff -= diffDays * day;
int diffHours = (int) Math.floor(diff / hour);
diff -= diffHours * hour;
int diffMinutes = (int) Math.floor(diff / minute);
/*
//if you don't need all item simultaneously and want all values complete:
int diffYears = (int) Math.floor(diff / year);
int diffMonthes = (int) Math.floor(diff / month);
int diffDays = (int) Math.floor(diff / day);
int diffHours = (int) Math.floor(diff / hour);
int diffMinutes = (int) Math.floor(diff / minute);
*/
Log.i("LOG", diffYears + " years, ");
Log.i("LOG", diffMonthes + " monthes, ");
Log.i("LOG", diffDays + " days, ");
Log.i("LOG", diffHours + " hours, ");
Log.i("LOG", diffMinutes + " minutes, ");
Log.i("LOG", diff + " diff, ");
if (diffYears != 0) {
returnValue = diffYears + " " + "سال";
} else if (diffMonthes != 0) {
returnValue = diffMonthes + " " + "ماه";
} else if (diffDays != 0) {
returnValue = diffDays + " " + "روز";
} else if (diffHours != 0) {
returnValue = diffHours + " " + "ساعت";
} else if (diffMinutes != 0) {
returnValue = diffMinutes + " " + "دقیقه";
} else {
returnValue = "لحظه ای";
}
}
catch (Exception e) {
e.printStackTrace();
}
return returnValue + " قبل";
}
نظرات
بنظرم درست اینه که شما ، با تایم استمپ کار کنید.
می تونید تایم استمپ پیام رو ذخیره کنید و هروقت کاربر پیام رو دید ببینید که اختلاف اون زمان تا الان چقدره؟
بعد اختلاف زمان رو محاسبه کنید تا ببینید که چند دقیقه گذشته.
نظرات
از کلاس زیر استفاده کنید
public class HelperTime {
private static final long SECOND_MILLIS = 1000;
private static final long MINUTE_MILLIS = 60 * SECOND_MILLIS;
private static final long HOUR_MILLIS = 60 * MINUTE_MILLIS;
private static final long DAY_MILLIS = 24 * HOUR_MILLIS;
private static final long Month_MILLIS = 30*24 * HOUR_MILLIS;
private static final long Year_MILLIS = 12*30*24 * HOUR_MILLIS;
public static String gettime(String times){
long time=Long.parseLong(times);
// Log.e("time123",time+"");
long now = System.currentTimeMillis();
final long diff = now - time;
if (diff < MINUTE_MILLIS) {
return "لحظاتی پیش ";
} else if (diff < 2 * MINUTE_MILLIS) {
return "یک دقیقه قبل";
} else if (diff < 50 * MINUTE_MILLIS) {
return diff / MINUTE_MILLIS + " دقیقه قبل ";
} else if (diff < 90 * MINUTE_MILLIS) {
return "یک ساعت پیش ";
} else if (diff < 24 * HOUR_MILLIS) {
return diff / HOUR_MILLIS + " ساعت پیش ";
} else if (diff < 48 * HOUR_MILLIS) {
return " دیروز ";
} else if (diff < 31*DAY_MILLIS){
return diff / DAY_MILLIS + " روز پیش ";
}
else if (diff < 13 * Month_MILLIS){
return diff / Month_MILLIS + " ماه پیش ";
}
else if (diff < 100 * Year_MILLIS){
return diff / Year_MILLIS + " سال پیش ";
}else {
return diff / Year_MILLIS + " سال پیش ";
}
}
}
بعد جایی که نیاز دارید زمان مورد نظر با زمان کنونی مقایسه انجام بشه کد زیر رو وارد کنید
HelperTime.gettime(yourtime);
نظرات
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات