qq_40723031 2017-11-15 11:48 采纳率: 0%
浏览 1361

求助!安卓计算用户输入时间与当前时间差并显示的程序,大神帮忙看看代码哪里有问题,感激不尽!

public class MainActivity extends Activity {

private Button Btn1,Btn2,Btn3,Btn4;
private EditText editText1;
private TextView textView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Btn4 = (Button) findViewById(R.id.btn4);
    editText1 = (EditText) findViewById(R.id.EditText1);
            textView1 = (TextView) findViewById(R.id.TextView1);、
            new TimeThread().start();

    Btn4.setOnClickListener(new MyClickListener());
}
      class MyClickListener implements View.OnClickListener{

        @Override
        public void onClick(View v) {
            SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
            Date currentTime = new Date();
            String date1 = df.format(currentTime);
            try 
            {
                int I1 = editText1.length();
                if (I1 == 8)
                {
                    CharSequence ed1 = editText1.getText();
                    String date2 = df.format(ed1);
                    try{ 
                        Date d1 = df.parse(date1);
                        Date d2 = df.parse(date2);
                        //计算时间差
                        long diff = (d1.getTime() - d2.getTime());

                        long day = diff / (1000 * 60 * 60 * 24);
                        long hour = (diff / (60 * 60 * 1000) - day *24);
                        long minute = (diff / (60 * 1000) - day * 24 * 60 - hour * 60);
                        long s = (diff / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60);
                        //输出时间差
                        System.out.println(hour + "小时" + minute + "分" + s + "秒");
                        textView2.setText(hour + "小时" + minute + "分");
                    } 
                    catch(Exception e){
                    }
                }
            }
            catch(Exception e)
            {

            }
            }
        }


    class TimeThread extends Thread 
    {
            @Override
            public void run() {
                do {
                    try 
                    {
                        Thread.sleep(1000);
                        Message msg = new Message();
                        msg.what = 1;  //消息(一个整型值)
                        mHandler.sendMessage(msg);// 每隔1秒发送一个msg给mHandler
                    } catch (InterruptedException e)
                    {
                        e.printStackTrace();
                    }
                } while (true);
            }
    }


    private  Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what)  
            {
            case 1:
                long sysTime = System.currentTimeMillis();
                CharSequence sysTimeStr = DateFormat.format("kk:mm:ss", sysTime);
                textView1.setText(sysTimeStr); //更新时间
                break;
            default:
                break;

            }
        }
    };
  • 写回答

1条回答 默认 最新

  • 周末不想在家 2017-11-16 02:14
    关注

    用这个试试
    long days = diff / (1000 * 60 * 60 * 24);
    long hours = (diff - days * (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);
    long minutes = (diff - days * (1000 * 60 * 60 * 24) - hours * (1000 * 60 * 60)) / (1000 * 60);
    long second = ((diff - days * (1000 * 60 * 60 * 24) - hours * (1000 * 60 * 60)) -
    minutes * (1000 * 60)) / 1000;

    评论

报告相同问题?

悬赏问题

  • ¥20 蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏