이전 질문을 살펴 보았지만 내가 찾고있는 답이 없었습니다. 밀리 초를 StopWatch 메서드에서 분 및 초로 변환하려면 어떻게합니까? 나는 가지고있다:
watch.start();
스톱워치를 시작하고
watch.stop();
시계를 중지합니다. 나는 나중에
watch.getTime();
밀리 초를 반환합니다. 초 및 분 단위로 반환되기를 원합니다. 그렇게하려면 어떻게해야합니까? 나는 1000을 곱하거나 나누지 않고 전체 계산을 더 읽기 쉽고 오류 가능성이 적은 방법을 찾는 방법을 찾고 있습니다.
답변
사용하는 것이 좋습니다 TimeUnit
. 다음과 같이 사용할 수 있습니다.
long minutes = TimeUnit.MILLISECONDS.toMinutes(millis);
long seconds = TimeUnit.MILLISECONDS.toSeconds(millis);
답변
밀리 초를 초로 변환 한 후 (1000으로 나누어서)를 사용 / 60
하여 분 값을 가져오고 % 60
(나머지)를 사용하여 “초 단위”값을 가져올 수 있습니다.
long millis = .....; // obtained from StopWatch
long minutes = (millis / 1000) / 60;
int seconds = (int)((millis / 1000) % 60);
답변
tl; dr
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 ) ;
자바 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 15S
해결
참고로 now
Java 8과 Java 9 사이 에서 메서드 의 해결 방법이 변경되었습니다 . 이 질문을 참조하십시오 .
- Java 9 는 나노초 단위의 정밀한 해상도로 순간을 포착합니다. 해상도는 컴퓨터 하드웨어의 성능에 따라 다릅니다. macOS Sierra가 설치된 MacBook Pro Retina에서 마이크로 초 (소수점 6 자리)가 표시됩니다.
- Java 8 은 순간을 최대 밀리 초까지만 캡처합니다. 의 구현은
Clock
밀리 초 단위로 제한됩니다. 따라서 나노초 단위로 값을 저장할 수 있지만 밀리 초 단위 로만 캡처 할 수 있습니다 .
java.time 정보
java.time의 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이 클래스는 까다로운 기존에 대신 기존 과 같은 날짜 – 시간의 수업을 java.util.Date
, Calendar
, SimpleDateFormat
.
자세한 내용은 Oracle Tutorial을 참조하십시오 . 그리고 많은 예제와 설명을 위해 Stack Overflow를 검색하십시오. 사양은 JSR 310 입니다.
Joda 타임 프로젝트는 지금에 유지 관리 모드 의로 마이그레이션을 조언 java.time의 클래스.
java.time 객체를 데이터베이스와 직접 교환 할 수 있습니다 . JDBC 4.2 이상을 준수 하는 JDBC 드라이버를 사용하십시오 . 문자열이나 클래스 가 필요하지 않습니다 .java.sql.*
java.time 클래스는 어디서 구할 수 있습니까?
- Java SE 8 , Java SE 9 , Java SE 10 , Java SE 11 이상 -번들로 구현 된 표준 Java API의 일부입니다.
- Java 9에는 몇 가지 사소한 기능과 수정 사항이 추가되었습니다.
- Java SE 6 및 Java SE 7
- 대부분의 java.time 기능은 ThreeTen-Backport의 Java 6 및 7로 백 포트됩니다 .
- 기계적 인조 인간
- 최신 버전의 Android 번들 구현 java.time 클래스 .
- 이전 Android (<26)의 경우 ThreeTenABP 프로젝트는 ThreeTen-Backport (위에서 언급)를 채택합니다 . ThreeTenABP 사용 방법…을 참조하십시오 .
답변
이것은 기본적인 수학입니다. 1000 밀리 초 = 1 초 및 60000 밀리 초 = 1 분; 그러니 그냥 해
int seconds=(millis/1000)%60;
long minutes=((millis-seconds)/1000)/60;
답변
저는 안드로이드 용 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;
}
답변
다음은 전체 프로그램입니다.
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 );
}
}
여기에서이 프로그램을 찾았습니다. ” 링크 “가 자세히 설명되어 있습니다.
답변
X 밀리 초 = X / 1000 초 = (X / 1000) / 60 분
100,000 밀리 초가있는 경우이 값을 1,000으로 나누면 100 초가 남습니다. 이제 100/60 = 1.666 ~ 분이지만 분수 분은 값이 없으므로 나머지를 찾기 위해 100 % 60 = 40 초를 수행 한 다음 정수 나누기 100/60 = 1 분, 나머지 40 초를 사용합니다. 답 : 1 분 40 초.
![](http://daplus.net/wp-content/uploads/2023/04/coupang_part-e1630022808943-2.png)