62
задан 11 August 2015 в 15:41

14 ответов

Я предложил бы использовать TimeUnit. Можно использовать его как это:

long minutes = TimeUnit.MILLISECONDS.toMinutes(millis);
long seconds = TimeUnit.MILLISECONDS.toSeconds(millis);
159
ответ дан 31 October 2019 в 13:05

Можно легко преобразовать миллисекунды в секунды, минуты и часы.

                val millis = **milliSecondsYouWantToConvert**
                val seconds = (millis / 1000) % 60
                val minutes = ((millis / 1000) / 60) % 60
                val hours = ((millis / 1000) / 60) / 60

                println("--------------------------------------------------------------------")
                println(String.format("%02dh : %02dm : %02ds remaining", hours, minutes, seconds))
                println("--------------------------------------------------------------------")
**RESULT :** 
--------------------------------------------------------------------
  01h : 23m : 37s remaining
--------------------------------------------------------------------

0
ответ дан 31 October 2019 в 13:05
package com.v3mobi.userpersistdatetime;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Toast;

import java.util.Date;
import java.util.concurrent.TimeUnit;

public class UserActivity extends AppCompatActivity {

    Date startDate;
    Date endDate;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user);
        startDate = java.util.Calendar.getInstance().getTime(); //set your start time
    }

    @Override
    protected void onStop() {
        super.onStop();
        endDate = java.util.Calendar.getInstance().getTime(); // set  your end time

        chekUserPersistence();

    }

    private void chekUserPersistence()
    {
        long duration = endDate.getTime() - startDate.getTime();
//        long duration = 301000;

        long diffInMinutes = TimeUnit.MILLISECONDS.toMinutes(duration);         // minutes ok
        long secs = (duration/1000) % 60;         // minutes ok


        Toast.makeText(UserActivity.this, "Diff  "
                +  diffInMinutes + " : "+ secs , Toast.LENGTH_SHORT).show();

        System.out.println("Diff  " + diffInMinutes +" : "+ secs );

        Log.e("keshav","diffInMinutes -->" +diffInMinutes);
        Log.e("keshav","secs -->" +secs);
        finish();
    }
}
0
ответ дан 31 October 2019 в 13:05

Вот простое решение. Вызовы в качестве примера, которые могли использоваться в любом методе:

  • StopWatch.start();
  • StopWatch.stop();
  • StopWatch.displayDiff(); различие в дисплеях в минутах и секундах между запуском и остановкой. (прошедшее время)

    import java.time.Duration;
    import java.time.Instant;
    
    
    public class StopWatch {
    
        private static Instant start;
        private static Instant stop;
    
        private void StopWatch() {
            // not called
        }
    
        public static void start() {
            start = Instant.now();
        }
    
        public static void stop() {
            stop = Instant.now();
        }
    
        public static void displayDiff() {
            Duration totalTime = Duration.between(start, stop);
            System.out.println(totalTime.toMinutes() + " Minutes " 
                               + totalTime.toMillis() / 1000 + " Seconds");
        }
    }
    
0
ответ дан 31 October 2019 в 13:05

Можно попытаться продолжить двигаться этот путь:

значение мс Передачи от

Long ms = watch.getTime();

к

getDisplayValue(ms)

реализация Kotlin:

fun getDisplayValue(ms: Long): String {
        val duration = Duration.ofMillis(ms)
        val minutes = duration.toMinutes()
        val seconds = duration.minusMinutes(minutes).seconds

        return "${minutes}min ${seconds}sec"
}

реализация Java:

public String getDisplayValue(Long ms) {
        Duration duration = Duration.ofMillis(ms);
        Long minutes = duration.toMinutes();
        Long seconds = duration.minusMinutes(minutes).getSeconds();

        return minutes + "min " + seconds "sec"
}
3
ответ дан 31 October 2019 в 13:05

Я не думаю поддержка Java 1.5 параллельный TimeUnit. Иначе я предложил бы для TimeUnit. Ниже основан на чистом математическом подходе.

stopWatch.stop();
long milliseconds = stopWatch.getTime();

int seconds = (int) ((milliseconds / 1000) % 60);
int minutes = (int) ((milliseconds / 1000) / 60);
3
ответ дан 31 October 2019 в 13:05

X миллисекунд = X / 1 000 секунд = (X / 1000) / 60 минут

, Если у Вас есть 100 000 миллисекунд, разделите это значение на 1 000, и Вас оставляют с 100 секундами. Теперь 100 / 60 = 1,666 ~ минуты, но дробные минуты не имеют никакого значения, таким образом: сделайте 100% 60 = 40 секунд для нахождения остатка, затем целочисленное деление 100 / 60 = 1 минута, с остатком 40 секунд. Ответ: 1 минута, 40 секунд.

4
ответ дан 31 October 2019 в 13:05

Преобразовать время в millis непосредственно к минутам: второй формат можно использовать это

String durationText = DateUtils.formatElapsedTime(timeInMillis / 1000));

, Это возвратит строку со временем в надлежащем форматировании. Это работало на меня.

3
ответ дан 31 October 2019 в 13:05

Вот полная программа

import java.util.concurrent.TimeUnit;

public class Milliseconds {

public static void main(String[] args) {
    long milliseconds = 1000000;

    // long minutes = (milliseconds / 1000) / 60;
    long minutes = TimeUnit.MILLISECONDS.toMinutes(milliseconds);

    // long seconds = (milliseconds / 1000);
    long seconds = TimeUnit.MILLISECONDS.toSeconds(milliseconds);

    System.out.format("%d Milliseconds = %d minutes\n", milliseconds, minutes );
    System.out.println("Or");
    System.out.format("%d Milliseconds = %d seconds", milliseconds, seconds );

}
}

, я нашел эту программу здесь" Ссылка ", там она объяснена подробно.

7
ответ дан 31 October 2019 в 13:05

Я создавал приложение для MP3-плеера для андроида, таким образом, я сделал это как это для получения текущего времени и продолжительности

 private String millisecondsToTime(long milliseconds) {
    long minutes = (milliseconds / 1000) / 60;
    long seconds = (milliseconds / 1000) % 60;
    String secondsStr = Long.toString(seconds);
    String secs;
    if (secondsStr.length() >= 2) {
        secs = secondsStr.substring(0, 2);
    } else {
        secs = "0" + secondsStr;
    }

    return minutes + ":" + secs;
}
7
ответ дан 31 October 2019 в 13:05

Это - просто основная математика. 1 000 milliseconds=1 секунд и 60 000 миллисекунд = 1 минута; Поэтому просто сделайте,

int seconds=(millis/1000)%60;

long minutes=((millis-seconds)/1000)/60;
10
ответ дан 31 October 2019 в 13:05

tl; доктор

Duration d = Duration.ofMillis( … ) ;
int minutes = d.toMinutesPart() ;
int seconds = d.toSecondsPart() ;

Java 9 и позже

В Java 9 и позже, создайте Duration и звоните эти to…Part методы. В этом случае: toMinutesPart и toSecondsPart.

Получение запуск & остановка Вашего секундомера.

Instant start = Instant.now(); 
…
Instant stop = Instant.now();

Представляют прошедшее время в Duration объект.

Duration d = Duration.between( start , stop );

Опрос для каждой части, минуты и секунды.

int minutes = d.toMinutesPart();
int seconds = d.toSecondsPart();

Вы могли бы также хотеть видеть, работал ли Ваш секундомер как и следовало ожидать долго.

Boolean ranTooLong = ( d.toDaysPart() > 0 ) || ( d.toHoursPart() > 0 ) ;

Java 8

В Java 8, Duration классу недостает to…Part методы. Необходимо будет сделать математику как показано в других Ответах.

long entireDurationAsSeconds = d.getSeconds();

Или позволяют Duration, делают математику.

long minutesPart = d.toMinutes(); 
long secondsPart = d.minusMinutes( minutesPart ).getSeconds() ;

См. живой код в IdeOne.com .

Интервал: 2016-12-18T08:39:34.099Z/2016-12-18T08:41:49.099Z

d.toString (): PT2M15S

d.getSeconds (): 135

Истекший: 2M 15

Разрешение

к вашему сведению, разрешение [1 115] методы, измененные между Java 8 и Java 9. См. этот Вопрос .

13
ответ дан 31 October 2019 в 13:05

После преобразования millis к секундам (путем деления на 1 000), можно использовать / 60, чтобы заставить мелкое значение, и % 60 (остаток) получить "секунды в минуту" значение.

long millis = .....;  // obtained from StopWatch
long minutes = (millis / 1000)  / 60;
int seconds = (int)((millis / 1000) % 60);
34
ответ дан 31 October 2019 в 13:05

Для получения фактического часа минута и секунды, как это появляется на часах, пробуют этот код

val sec = (milliSec/1000) % 60
val min = ((milliSec/1000) / 60) % 60
val hour = ((milliSec/1000) / 60) / 60
5
ответ дан 31 October 2019 в 13:05

Другие вопросы по тегам:

Похожие вопросы: