آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

نمایش زمان به صورت دو دقیقه پیش ، دو ساعت پیش و ...

126943  8 سال پیش  7 سال پیش
+1 0

سلام

میخواستم بدونم چطور میشه نمایش رو به صورت دو دقیقه پیش یا دو ساعت پیش از این مدل به دست اورد . مثلا یکی یه پیام میزاره حدودا دو دقیقه پیش این رو چطور نمایش میدن؟

با تشکر

 

0 0
منم به این آموزش نیاز دارم (7 سال پیش)
0 0
منم به این آموزش نیاز دارم دوستان کسی قبلا چنین کاری کرده (7 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
116236  7 سال پیش
0 0

  کد کامل چیزی که میخواین:

/**
     * 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 + " قبل";

    }
0 0
be careful because it is deprecated............ (7 سال پیش)
پاسخ به سوال 
وحید  7 سال پیش
0 0

بنظرم درست اینه که شما ، با تایم استمپ کار کنید.
می تونید تایم استمپ پیام رو ذخیره کنید و هروقت کاربر پیام رو دید ببینید که اختلاف اون زمان تا الان چقدره؟
بعد اختلاف زمان رو محاسبه کنید تا ببینید که چند دقیقه گذشته.

پاسخ به سوال 
126943  7 سال پیش
0 0

از کلاس زیر استفاده کنید

 
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);
 

 


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .