如何创建特定日期的倒计时?
我想创建一个从当前日期倒计时到特定日期的倒计时。
我也尝试过 stackoverflow 代码。然而,我的天数过多或者计时器不起作用。
我的时间片段.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
in the timer
while 21
将是“天”部分的预期值而不是51
.
Hint- 如果您想要同步时间的倒计时
GitHub
你的问题是8
不是8月而是9月,9月23日距现在大约还有52天。该月份的索引为 0。
解决办法:使用7
八月。
参见例如https://stackoverflow.com/a/344400/2442804试图解释原因。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)