내 Android 앱에서 카운트 업 타이머를 yy-MM-dd h:m:s
형식 으로 표시하고 싶습니다.
내가 시도한 것 : 역순으로 작동하도록 CountDownTimer를 조작 해 보았습니다. 간격을 -1000으로 변경하거나 초당 카운트 다운에 2000 밀리 초를 추가합니다. 둘 다 작동하지 않았습니다. 그런 다음 Chronometer 클래스를 사용해야한다고 생각했습니다. 표준 크로노 미터는 제가 아는 한시, 분, 초만 표시합니다. 그래서 며칠도, 몇 달도, 몇 년도 없습니다. 한 가지 더
시간이 1 분 미만이면 타이머는 이와 같은 초만 표시합니다.
00 초
1 시간 미만이면 분과 초만 있으면 형식이
00 분 00 초
1 일 미만이면 시간, 분, 초만
00 시간 00 분 00 초
1 개월 미만이면 일, 시간, 분, 초만 표시합니다.
0 일 00 시간 00 분 00 초
1 년 미만이면 월, 일, 시간, 분, 초만 표시합니다.
0 개월 0 일 00 시간 00 분 00 초
1 년 이상 다음과 같이 표시되면
0 년 0 개월 0 일 00 시간 00 분 00 초
내가 작성한 코드
chronometer.setFormat("%s");
chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
String cTextSize = chronometer.getText().toString();
if ((SystemClock.elapsedRealtime() - chronometer.getBase()) < 60000) {
chronometer.setText(cTextSize.substring(3,5)+" sec");
}
else if (((SystemClock.elapsedRealtime() - chronometer.getBase()) >= 60000) && ((SystemClock.elapsedRealtime() - chronometer.getBase()) < 3600000)){
chronometer.setText(cTextSize.substring(0,2)+" mins "+cTextSize.substring(3,5)+" sec");
}
else if (((SystemClock.elapsedRealtime() - chronometer.getBase()) >= 3600000) && ((SystemClock.elapsedRealtime() - chronometer.getBase()) < 86400000)){
chronometer.setText(cTextSize.substring(0,2)+" hours "+cTextSize.substring(3,5)+" mins "+cTextSize.substring(6,8)+" sec");
}
}
여기 코드는 시간을 표시 할 때까지 잘 실행되지만 이제 시간이 24보다 크면 25 시간이 아닌 1 일을 표시합니다.
귀하의 도움을 많이 주시면 감사하겠습니다. 답변을 모르면 부정적으로 투표하지 마십시오.
도움을 주신 모든 Google 인증 개발자에게 감사드립니다. 어쨌든 이것이 내 문제를 해결 한 방법입니다.
chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
String cTextSize = chronometer.getText().toString();
if ((SystemClock.elapsedRealtime() - chronometer.getBase()) < 60000) {
chronometer.setText(cTextSize.substring(3, 5) + " sec");
}
else if (((SystemClock.elapsedRealtime() - chronometer.getBase()) >= 60000) && ((SystemClock.elapsedRealtime() - chronometer.getBase()) < 3600000)) {
chronometer.setText(cTextSize.substring(0, 2) + " mins " + cTextSize.substring(3, 5) + " sec");
}
else if (((SystemClock.elapsedRealtime() - chronometer.getBase()) >= 3600000) && ((SystemClock.elapsedRealtime() - chronometer.getBase()) < 86400000)) {
if (chronometer.getText().length() == 8){
chronometer.setText(cTextSize.substring(0, 2) + " hours " + cTextSize.substring(3, 5) + " mins " + cTextSize.substring(6, 8) + " sec");
}
}
else if(((SystemClock.elapsedRealtime() - chronometer.getBase()) >= 86400000) && ((SystemClock.elapsedRealtime() - chronometer.getBase()) < 2592000000L))
{
Toast.makeText(getActivity(), "day", Toast.LENGTH_SHORT).show();
long dy = TimeUnit.MILLISECONDS.toDays(SystemClock.elapsedRealtime() - chronometer.getBase());
final long hr = TimeUnit.MILLISECONDS.toHours(SystemClock.elapsedRealtime() - chronometer.getBase())
- TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(SystemClock.elapsedRealtime() - chronometer.getBase()));
final long min = TimeUnit.MILLISECONDS.toMinutes(SystemClock.elapsedRealtime() - chronometer.getBase())
- TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(SystemClock.elapsedRealtime() - chronometer.getBase()));
final long sec = TimeUnit.MILLISECONDS.toSeconds(SystemClock.elapsedRealtime() - chronometer.getBase())
- TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(SystemClock.elapsedRealtime() - chronometer.getBase()));
if(dy==1) {
chronometer.setText(dy + " day " + hr + " hours " + min + " mins " + sec + " sec ");
}else if(dy>1) {
chronometer.setText(dy + " days " + hr + " hours " + min + " mins " + sec + " sec ");
}
}
else if(((SystemClock.elapsedRealtime() - chronometer.getBase()) >= 2592000000L) && ((SystemClock.elapsedRealtime() - chronometer.getBase()) < 31556952000L))
{
Toast.makeText(getActivity(), "month", Toast.LENGTH_SHORT).show();
long dy = TimeUnit.MILLISECONDS.toDays(SystemClock.elapsedRealtime() - chronometer.getBase());
final long mn = dy / 30;
dy %= 30;
final long hr = TimeUnit.MILLISECONDS.toHours(SystemClock.elapsedRealtime() - chronometer.getBase())
- TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(SystemClock.elapsedRealtime() - chronometer.getBase()));
final long min = TimeUnit.MILLISECONDS.toMinutes(SystemClock.elapsedRealtime() - chronometer.getBase())
- TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(SystemClock.elapsedRealtime() - chronometer.getBase()));
final long sec = TimeUnit.MILLISECONDS.toSeconds(SystemClock.elapsedRealtime() - chronometer.getBase())
- TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(SystemClock.elapsedRealtime() - chronometer.getBase()));
chronometer.setText(mn+" months "+dy + " days " + hr + " hours " + min + " mins " + sec + " sec ");
}
else if(((SystemClock.elapsedRealtime() - chronometer.getBase()) >= 31556952000L))
{
Toast.makeText(getActivity(), "year", Toast.LENGTH_SHORT).show();
long dy = TimeUnit.MILLISECONDS.toDays(SystemClock.elapsedRealtime() - chronometer.getBase());
final long yr = dy / 365;
dy %= 365;
final long mn = dy / 30;
dy %= 30;
final long hr = TimeUnit.MILLISECONDS.toHours(SystemClock.elapsedRealtime() - chronometer.getBase())
- TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(SystemClock.elapsedRealtime() - chronometer.getBase()));
final long min = TimeUnit.MILLISECONDS.toMinutes(SystemClock.elapsedRealtime() - chronometer.getBase())
- TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(SystemClock.elapsedRealtime() - chronometer.getBase()));
final long sec = TimeUnit.MILLISECONDS.toSeconds(SystemClock.elapsedRealtime() - chronometer.getBase())
- TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(SystemClock.elapsedRealtime() - chronometer.getBase()));
chronometer.setText(yr+" years "+mn+" months "+dy + " days " + hr + " hours " + min + " mins " + sec + " sec ");
}
}
});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다