Android
Android

Reputation: 23

Can not convert milliseconds to seconds as expected

Hi i need to convert milliseconds (1437790538 its 25 july 2015) to seconds but when i trying to convert seconds then it not work i get irrelevant result.From last two days very stressed from these result.

i have use this code for doing this purpose

              long duration_seconds  = 1437790538;

            Calendar calendar = Calendar.getInstance();
                TimeZone tz = TimeZone.getDefault();
                calendar.setTimeInMillis(duration_seconds * 1000);
                calendar.add(Calendar.MILLISECOND,
                        tz.getOffset(calendar.getTimeInMillis()));
                 SimpleDateFormat sdf = new
                 SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

                Date currenTimeZone = (Date) calendar.getTime();
                String resultabc = sdf.format(currenTimeZone);

                long curMillis = currenTimeZone.getTime() / 1000;

// long seconds = (curMillis/ 1000) % 60;

                Log.e("test", "datee1 :" + resultabc + " , " + curMillis + " , " + seconds);

                getDurationBreakdown(curMillis);

                calculateTime(seconds);

after i need to calculate total time of post like this

public static void calculateTime(long seconds) {

    int day1 = (int) TimeUnit.SECONDS.toDays(seconds);
    long hours1 = TimeUnit.SECONDS.toHours(seconds) - (day1 * 24);
    long minute1 = TimeUnit.SECONDS.toMinutes(seconds)
            - (TimeUnit.SECONDS.toHours(seconds) * 60);
    long second1 = TimeUnit.SECONDS.toSeconds(seconds)
            - (TimeUnit.SECONDS.toMinutes(seconds) * 60);

    Log.e("test", "time interval ::" + "Day " + day1 + " Hour " + hours1
            + " Minute " + minute1 + " Seconds " + second1);
    // int days, hours, mins, seconds, justnow;
    days = (int) day1;
    hours = (int) hours1;
    mins = (int) minute1;
    seconds = (int) second1;

    System.out.println("Day " + day1 + " Hour " + hours1 + " Minute1 "
            + minute1 + " Seconds " + second1);
 public static String getDurationBreakdown(long millis)
    {
        if(millis < 0)
        {
            throw new IllegalArgumentException("Duration must be greater than zero!");
        }

        long days = TimeUnit.MILLISECONDS.toDays(millis);
        millis -= TimeUnit.DAYS.toMillis(days);
        long hours = TimeUnit.MILLISECONDS.toHours(millis);
        millis -= TimeUnit.HOURS.toMillis(hours);
        long minutes = TimeUnit.MILLISECONDS.toMinutes(millis);
        millis -= TimeUnit.MINUTES.toMillis(minutes);
        long seconds = TimeUnit.MILLISECONDS.toSeconds(millis);

        StringBuilder sb = new StringBuilder(64);
        sb.append(days);
        sb.append(" Days ");
        sb.append(hours);
        sb.append(" Hours ");
        sb.append(minutes);
        sb.append(" Minutes ");
        sb.append(seconds);
        sb.append(" Seconds");

        Log.e("test", "time interval" + sb.toString());

        return(sb.toString());
    }

}

both methods giving wrong result. if anybody have idea how to do this thing in correct way please help me out this problem.. thanks in advance

Upvotes: 0

Views: 1450

Answers (2)

Benvorth
Benvorth

Reputation: 7722

Your

long curMillis = currenTimeZone.getTime() / 1000;

seems misleading. .getTime() will give you the time in millis, so dividing it by 1000 you will get secs not milis...

UPDATE

As far as I understand your code you simply want to calculate the difference between a given date (represented in secs) and the actual date. For that you can just do

long myDateInSecs = 1437790538; //  25 july 2015

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(myDateInSecs * 1000);

Calendar calendarNow = Calendar.getInstance();

long diff = calendarNow.getTime() - calendar.getTime();

long seconds = TimeUnit.MILLISECONDS.toSeconds(diff);
long minutes = TimeUnit.MILLISECONDS.toMinutes(diff); 
...

Upvotes: 2

hoijui
hoijui

Reputation: 3894

seconds % 60

1437790538 % 60 -> 38

1437790538 is a timestamp in seconds, not in milliseconds.

Upvotes: 0

Related Questions