1.直接返回剩余时间
public static String payDownTime(long timeMi) {
final String[] downTime = {""};
long time = System.currentTimeMillis();
String l = String.valueOf(timeMi - time);
Log.e("========", "==payDownTime: l == " + l);
if (timeMi - time < 0) {
return "";
}
return countTime(Integer.parseInt(l) / 1000);
}
private static String countTime(int time) {
String day = String.valueOf(time / (3600 * 24));
String hour = String.valueOf(time / 3600);
String minute = String.valueOf(time % 3600 / 60);
String second = String.valueOf(time % 3600 % 60);
return (day.equals("0") ? "" : (day + "天 "))
+ (hour.length() == 2 ? hour : ("0" + hour)) + ":"
+ (minute.length() == 2 ? minute : ("0" + minute)) + ":"
+ (second.length() == 2 ? second : ("0" + second));
}
2.带有自动倒计时
public String payDownTime(long timeMi0, TextView textView0) {
long time = System.currentTimeMillis();
String l = String.valueOf(timeMi0 - time);
Log.e("========", "==payDownTime: l == " + l);
if (timeMi0 - time < 0) {
return "";
}
textView = textView0;
timeMi = timeMi0;
payDownTimeH.removeMessages(0);
payDownTimeH.sendEmptyMessageDelayed(0, 1000);
return countTime(Integer.parseInt(l) / 1000);
}
private String countTime(int time) {
String day = String.valueOf(time / (3600 * 24));
String hour = String.valueOf(time / 3600);
String minute = String.valueOf(time % 3600 / 60);
String second = String.valueOf(time % 3600 % 60);
return (day.equals("0") ? "" : (day + "天 "))
+ (hour.length() == 2 ? hour : ("0" + hour)) + ":"
+ (minute.length() == 2 ? minute : ("0" + minute)) + ":"
+ (second.length() == 2 ? second : ("0" + second));
}
TextView textView;
long timeMi;
Handler payDownTimeH = new Handler() {
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
textView.setText(payDownTime(timeMi, textView));
payDownTimeH.removeMessages(0);
payDownTimeH.sendEmptyMessageDelayed(0, 1000);
}
};