项目中有包括天时分秒的倒计时需求,现整理如下,希望帮到有此需求的伙伴
如果后天返回的时间格式为yyyy-MM-dd HH:mm:ss 则需要做一些处理转换成时间戳
SimpleDateFormat dataformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { Date date1 = dataformat.parse(validTime); long validTimes = date1.getTime(); long timeDQ = new Date().getTime(); long date = validTimes - timeDQ; day = date / (1000 * 60 * 60 * 24); hour = (date / (1000 * 60 * 60) - day * 24); min = ((date / (60 * 1000)) - day * 24 * 60 - hour * 60); mSecond=(date/1000)-day * 24 * 60*60 - hour * 60*60-min *60;
//开启线程
private boolean isRun = true;
private void startRun() { new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub while (isRun) { try { Thread.sleep(1000); // sleep 1000ms Message message = Message.obtain(); message.what = 6; handler.sendMessage(message); } catch (Exception e) { e.printStackTrace(); } } } }).start(); }
private Handler handler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) case 6: computeTime(); if (day < 0 && hour <0 && min <0){ tv_djs.setText("已关闭"); } ll_time.setVisibility(View.VISIBLE); tv_djs.setText("距离信息关闭还有:"); tv_day.setText(day +""); tv_hour.setText(hour +""); tv_min.setText(min +""); tv_second.setText(mSecond+""); break; } super.handleMessage(msg); } };
/** * 倒计时计算 */ private void computeTime() { mSecond--; if (mSecond < 0) { min--; mSecond = 59; if (min < 0) { min = 59; hour--; if (hour < 0) { // 倒计时结束 hour = 23; day--; } } } }