在android studio中计算两次之间的差异

时间:2018-04-26 05:59:03

标签: java android

  1. 我创建了用于启动和停止停车及其工作的显示当前时间的按钮。

  2. 但是当我点击deductbtn时,手机上的应用程序会弹出并显示"我的应用程序1已停止"

  3. 我该如何解决这个问题?任何帮助都会受到很多关注。

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_payment_info);
    
    firebaseAuth = FirebaseAuth.getInstance();
    parkBtn = (Button)findViewById(R.id.parkBtn);
    stopparkBtn = (Button)findViewById(R.id.stopparkBtn);
    deductBtn = (Button)findViewById(R.id.deductBtn);
    timeResult = (TextView)findViewById(R.id.timeResult);
    timeResult2 = (TextView)findViewById(R.id.timeResult2);
    diffResult = (TextView)findViewById(R.id.diffResult);
    
    
    parkBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final Date d = new Date();
            SimpleDateFormat sdf1=new SimpleDateFormat("hh:mm a");
            final String currentDateTimeString = sdf1.format(d);
            timeResult.setText(currentDateTimeString);
    
        }
    });
    
    stopparkBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final Date d1= new Date();
            SimpleDateFormat sdf2 = new SimpleDateFormat("hh:mm a");
            final String currentDateTimeString1 = sdf2.format(d1);
            timeResult2.setText(currentDateTimeString1);
    
    
        }
    });
    
    deductBtn.setOnClickListener(new View.OnClickListener() {
    
        @Override
        public void onClick(View view) {
    
            float totalTime = Float.parseFloat(timeResult2.getText().toString());
            float totalTime1 = Float.parseFloat(timeResult.getText().toString());
            final float timeUsage = totalTime - totalTime1;
            diffResult.setText(String.valueOf(timeUsage));
    
        }
    });
    
    }
    
    }
    

2 个答案:

答案 0 :(得分:1)

新代码在这里:          @覆盖             public void onClick(查看视图){

            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm a");
            Date date1 = null;
            try {
                date1 = simpleDateFormat.parse(timeResult.getText().toString());
            } catch (ParseException e) {
                e.printStackTrace();
            }
            Date date2 = null;
            try {
                date2 = simpleDateFormat.parse(timeResult2.getText().toString());
            } catch (ParseException e) {
                e.printStackTrace();
            }
            String diffResult= DateUtils.getRelativeTimeSpanString(date1.getTime(), date2.getTime(), DateUtils.FORMAT_SHOW_TIME).toString();
            deductBtn.setText(diffResult);
        }

答案 1 :(得分:0)

你得到例外,因为

float totalTime = Float.parseFloat(timeResult2.getText().toString());
float totalTime1 = Float.parseFloat(timeResult.getText().toString());

此处,如果您在点击其他按钮后点击此按钮,则textview的文字将位于 format hh:mm a

如果您第一次点击按钮而不点击其他按钮,则 strings will be empty

两者都会抛出异常

  

java.lang.NumberFormatException:无效的浮动

你可以使用,

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm a");
date1 = simpleDateFormat.parse(timeResult2.getText().toString());
date2 = simpleDateFormat.parse(timeResult.getText().toString());
String diff= DateUtils.getRelativeTimeSpanString(date1.getTime(), date2.getTime(), DateUtils.HOUR_IN_MILLIS).toString();

在执行此操作之前,请确保您的textviews字符串不为空。