Как создать coutdown по указанной c дате?
Я хочу создать обратный отсчет, который отсчитывает обратный отсчет от текущей даты до указанной c даты. Я также пробовал код stackoverflow. Однако у меня было непомерное количество дней или таймер не работал.
My TimeFragment. java
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.os.CountDownTimer;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.kalirobot.daring.R;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
public class TimeFragment extends Fragment {
private TextView timer;
public static TimeFragment newInstance() {
return new TimeFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_time, container, false);
timer = view.findViewById(R.id.textView3);
Calendar start_calendar = Calendar.getInstance();
Calendar end_calendar = Calendar.getInstance();
// end DAY
end_calendar.set(2020, 8, 23);
long start_millis = start_calendar.getTimeInMillis();
long end_millis = end_calendar.getTimeInMillis();
long total_millis = (end_millis - start_millis);
CountDownTimer cdt = new CountDownTimer(total_millis, 1000) {
@Override
public void onTick(long millisUntilFinished) {
long days = TimeUnit.MILLISECONDS.toDays(millisUntilFinished);
millisUntilFinished -= TimeUnit.DAYS.toMillis(days);
long hours = TimeUnit.MILLISECONDS.toHours(millisUntilFinished);
millisUntilFinished -= TimeUnit.HOURS.toMillis(hours);
long minutes = TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished);
millisUntilFinished -= TimeUnit.MINUTES.toMillis(minutes);
long seconds = TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished);
timer.setText(days + ":" + hours + ":" + minutes + ":" + seconds);
}
@Override
public void onFinish() {
timer.setText("Finish!");
}
};
cdt.start();
return view;
}
}
Теперь результат 51:23:59:41
в timer
, а 21
будет ожидаемым значением для части «дней» вместо 51
.
Подсказка - если вам нужен обратный отсчет с синхронизированным временем
GitHub