无法显示我的Textview1和Textview2之间的计算时间差?

问题描述 投票:0回答:2

enter image description here

这是我的应用程序的屏幕截图,其中的时间为00:57:18,超时时间14:14:21应该自动计算为时差,结果将以总旅行时间显示(带红色圆圈)

您认为我需要更改我的代码以使输出正确显示在总时差中,谢谢您。

这是我的代码。

FormTimeOut.java

package com.example.serviceapplication;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import java.text.ParseException;
import java.text.SimpleDateFormat;

import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.database.Cursor;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.widget.ImageView;

import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

import com.example.serviceapplication.Utils.Utils;

public class FormTimeout extends BaseActivity {

private static final int SELECT_PHOTO = 7777;
Button btn_choose;

DatabaseHelper myDb;
EditText edittimei_te, edittimei_st, edittimei_sr, edittimei_qt, editTextId, edittimei_location;
TextView edittime_out, edittime_in, edittime_cu, edittime_br, edittime_ma, editTextsmsm, timeinjob, 
timecompany, timedates, timedept, edittimei_travel_start, DisplayDateTimeStart, 
edittimei_travel_total;
TextView editextin;
Spinner timeilegend;
Button btnAddData, btnviewALL,btngetData,btn_sign;
ImageView imageViews;
Button button;

//Calender/TIME//
Calendar calander;
SimpleDateFormat simpledateformat,simpledateformat2;
String Date, Date2;
TextView DisplayDateTime,DisplayDateTimeTotal, editTextsmsi, editTextsmsc, editTextsmsb, 
jobserialout;
Button BTN;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_form_timeout);
    myDb = new DatabaseHelper(this);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, 
 WindowManager.LayoutParams.FLAG_SECURE);
    edittime_out = (TextView) findViewById(R.id.editText_timei_out);
    edittimei_travel_start = (TextView) findViewById(R.id.editText_travel_start);
    edittimei_travel_total = (TextView) findViewById(R.id.editText_travel_total);
    editTextsmsi = (TextView) findViewById(R.id.editText_timein);
    editTextsmsc = (TextView) findViewById(R.id.editText_timei_cu);
    editTextsmsb = (TextView) findViewById(R.id.editText_timei_br);
    editTextsmsm = (TextView) findViewById(R.id.editText_timei_ma);
    edittimei_te = (EditText) findViewById(R.id.editText_timei_te);
    edittime_in = (TextView) findViewById(R.id.editText_timein);
    edittime_cu = (TextView) findViewById(R.id.editText_timei_cu);
    edittime_br = (TextView) findViewById(R.id.editText_timei_br);
    edittimei_location = (EditText) findViewById(R.id.editText_timei_loc);
    edittime_ma = (TextView) findViewById(R.id.editText_timei_ma);
    edittimei_st = (EditText) findViewById(R.id.editText_timei_st);
    edittimei_sr = (EditText) findViewById(R.id.editText_timei_sr);
    edittimei_qt = (EditText) findViewById(R.id.editText_timei_qt);
    jobserialout = (TextView) findViewById(R.id.textViewr);
    timeinjob = (TextView) findViewById(R.id.textViewJobIn);
    timecompany = (TextView) findViewById(R.id.editText_timei_co);
    timedates = (TextView) findViewById(R.id.editText_timei_timedate);
    timeilegend = (Spinner) findViewById(R.id.legend) ;
    timedept = (TextView) findViewById(R.id.department);

    imageViews = (ImageView)findViewById(R.id.image_view);

    btn_choose = (Button)findViewById(R.id.select_image);

    editTextId = (EditText) findViewById(R.id.editText_idin);
    btnAddData = (Button) findViewById(R.id.button_addout);
    btnviewALL = (Button) findViewById(R.id.button_viewAll);
    editextin = (TextView) findViewById(R.id.editText_timei_in);
    btngetData = (Button) findViewById(R.id.button_view);
    btn_sign = (Button) findViewById(R.id.signatures);
    Toast.makeText(this, "Form Time Out", Toast.LENGTH_SHORT).show();
    AddData();
    viewAll();
    getData();

    String date_n = new SimpleDateFormat("MM/dd/yyyy", Locale.getDefault()).format(new Date());
    TextView date  = (TextView) findViewById(R.id.editText_timei_timedate);
    date.setText(date_n);


    DisplayDateTime = (TextView) findViewById(R.id.editText_timei_out);
    DisplayDateTimeStart = (TextView) findViewById(R.id.editText_travel_start);
    DisplayDateTimeTotal = (TextView) findViewById(R.id.editText_travel_total);


    BTN = (Button) findViewById(R.id.button1);

    calander = Calendar.getInstance();
    simpledateformat = new SimpleDateFormat("HH:mm:ss");
    Date = simpledateformat.format(calander.getTime());
    simpledateformat2 = new SimpleDateFormat("HH:mm:ss");
    Date2 = simpledateformat2.format(calander.getTime());

    BTN.setOnClickListener(new View.OnClickListener()

    {

        @Override
        public void onClick (View v){

            DisplayDateTime.setText(Date);
            DisplayDateTimeStart.setText(Date2);

            try {

                Date oldDate = (java.util.Date) 
 simpledateformat2.parse(String.valueOf(simpledateformat));


                Date currentDate = new Date();

                long diff = currentDate.getTime() - oldDate.getTime();
                long seconds = diff / 1000;
                long minutes = seconds / 60;
                long hours = minutes / 60;

                if (oldDate.before(currentDate)) {

                    DisplayDateTimeTotal.setText("hours:" + hours + "minutes:" + minutes);

                }

                // Log.e("toyBornTime", "" + toyBornTime);

            } catch (ParseException e) {

                e.printStackTrace();
            }


        }
    });

    btn_choose.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setType("image/*");
            startActivityForResult(intent,SELECT_PHOTO);
        }
    });

    btn_sign.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            Intent intent = new Intent(FormTimeout.this, signature.class);
            startActivity(intent);
        }
    });

    Spinner dropdown = findViewById(R.id.legend);
    String[] items = new String[]{"","REG","SUN", "ABS", "HOL", "ST", "OT", "CS", "UND", "HAL"};
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, 
android.R.layout.simple_spinner_dropdown_item, items);
    dropdown.setAdapter(adapter);
    dropdown.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            String string = (String) 
timeilegend.getItemAtPosition(timeilegend.getSelectedItemPosition());

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
     });
     }

    protected void onActivityResult(int requestcode, int resultcode, Intent signature){
    super.onActivityResult(requestcode,resultcode,signature);
    if(requestcode == SELECT_PHOTO && resultcode == RESULT_OK && signature != null)
    {
        Uri pickedImage = signature.getData();
        imageViews.setImageURI(null);
        imageViews.setImageURI(pickedImage);
    }
    else
    {
        Toast.makeText(FormTimeout.this, "No Signature selected", Toast.LENGTH_LONG).show();
        imageViews.setImageDrawable(null);
    }
    }


    private void AddData() {
    btnAddData.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view)
        {
            String time_out = edittime_out.getText().toString();
            String time_tra = edittimei_travel_start.getText().toString();
            String time_ino = edittime_in.getText().toString();
            String time_cuo = edittime_cu.getText().toString();
            String time_bro = edittime_br.getText().toString();
            String time_loc = edittimei_location.getText().toString();
            String time_mao = edittime_ma.getText().toString();
            String time_tec = edittimei_te.getText().toString();
            String time_sta = edittimei_st.getText().toString();
            String time_sre = edittimei_sr.getText().toString();
            String time_qou = edittimei_qt.getText().toString();
            String serial_out = jobserialout.getText().toString();
            String timein_jobno = timeinjob.getText().toString();
            String time_co = timecompany.getText().toString();
            String time_dates = timedates.getText().toString();
            String timei_legend = timeilegend.getSelectedItem().toString();
            String timei_department = timedept.getText().toString();

            if (TextUtils.isEmpty(time_out)) {
                Toast.makeText(FormTimeout.this, "Please enter Time Out ", 
Toast.LENGTH_LONG).show();
                return;
            }

            if (TextUtils.isEmpty(time_tra)) {
                Toast.makeText(FormTimeout.this, "Please enter Travel End ", 
Toast.LENGTH_LONG).show();
                return;
            }

            if (TextUtils.isEmpty(time_ino)) {
                Toast.makeText(FormTimeout.this, "Please enter Time In ", Toast.LENGTH_LONG).show();
                return;
            }

            if (TextUtils.isEmpty(time_cuo)) {
                Toast.makeText(FormTimeout.this, "Please enter Customer ", 
Toast.LENGTH_LONG).show();
                return;
            }

            if (TextUtils.isEmpty(time_bro)) {
                Toast.makeText(FormTimeout.this, "Please enter Branch ", Toast.LENGTH_LONG).show();
                return;
            }

            if (TextUtils.isEmpty(time_loc)) {
                Toast.makeText(FormTimeout.this, "Please enter Location ", 
 Toast.LENGTH_LONG).show();
                return;
            }

            if (TextUtils.isEmpty(time_mao)) {
                Toast.makeText(FormTimeout.this, "Please enter Machine ", Toast.LENGTH_LONG).show();
                return;
            }

            if (TextUtils.isEmpty(time_tec)) {
                Toast.makeText(FormTimeout.this, "Please enter  Technician ", 
 Toast.LENGTH_LONG).show();
                return;
            }

            if (TextUtils.isEmpty(time_sta)) {
                Toast.makeText(FormTimeout.this, "Please enter Status ", Toast.LENGTH_LONG).show();
                return;
            }

            if (TextUtils.isEmpty(time_sre)) {
                Toast.makeText(FormTimeout.this, "Please enter  SR", Toast.LENGTH_LONG).show();
                return;
            }

            if (TextUtils.isEmpty(time_qou)) {
                Toast.makeText(FormTimeout.this, "Please enter Qoutation ", 
 Toast.LENGTH_LONG).show();
                return;
            }

            if (TextUtils.isEmpty(serial_out)) {
                Toast.makeText(FormTimeout.this, "Please enter Serial ", Toast.LENGTH_LONG).show();
                return;
            }

            if (TextUtils.isEmpty(timein_jobno)) {
                Toast.makeText(FormTimeout.this, "Please enter Time in ID ", 
Toast.LENGTH_LONG).show();
                return;
            }

            if (TextUtils.isEmpty(timei_legend)) {
                Toast.makeText(FormTimeout.this, "Please select Remarks ", 
Toast.LENGTH_LONG).show();
                return;
            }

            if (TextUtils.isEmpty(timei_department)) {
                Toast.makeText(FormTimeout.this, "Please select Department ", 
Toast.LENGTH_LONG).show();
                return;
            }

            if  (imageViews != null && imageViews.getDrawable() == null){
                Toast.makeText(FormTimeout.this, "Please select Signature ", 
Toast.LENGTH_LONG).show();
                return;
            }


            final Bitmap bitmap = ((BitmapDrawable) imageViews.getDrawable()).getBitmap();

            boolean isInserted = myDb.insertDataout( time_out, time_ino, time_cuo, time_bro, 
time_mao, time_tec, time_sta, time_sre,time_qou, serial_out, timein_jobno, timei_legend, time_co,  
time_dates, timei_department, Utils.getBytes(bitmap), time_tra, time_loc);
            if (isInserted == true) {
                Toast.makeText(FormTimeout.this, "Time Out Successfully", Toast.LENGTH_LONG).show();
                edittime_out.setText("");
                edittimei_travel_start.setText("");
                edittime_in.setText("");
                edittime_cu.setText("");
                edittime_br.setText("");
                edittimei_location.setText("");
                edittime_ma.setText("");
                edittimei_te.setText("");
                edittimei_st.setText("");
                edittimei_sr.setText("");
                edittimei_qt.setText("");
                jobserialout.setText("");
                edittimei_travel_start.setText("");
                edittimei_location.setText("");
                timeinjob.setText("");

                Intent intent = new Intent(FormTimeout.this, Timeoutsms.class);
                startActivity(intent);
                finish();

            } else
                Toast.makeText(FormTimeout.this, "Time Out Failed", Toast.LENGTH_LONG).show();
        }
        });
        }

    public void viewAll(){

    btnviewALL.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Cursor res=myDb.getAllData();
            if(res.getCount() == 0) {
                showMessage("Error","Nothing found");
                return;

            }
            StringBuffer buffer=new StringBuffer();
            while(res.moveToNext()){
                buffer.append("Job No:"+res.getString(0)+"\n\n");
                buffer.append("Date :"+ res.getString(6)+"\n\n");
                buffer.append("Time :"+ res.getString(1)+"\n\n");
                buffer.append("Customer :"+ res.getString(2)+"\n\n");
                buffer.append("Branch :"+ res.getString(3)+"\n\n");
                buffer.append("Machine :"+ res.getString(4)+"\n\n\n");
                buffer.append("--------------------------------------"+"\n\n\n");
            }

            showMessage("Time In Record",buffer.toString());
        }
    });
}

     public void getData() {
     btngetData.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            String id = editTextId.getText().toString();

            if (id.equals("")) {
                editTextId.setError("Enter id to get data");

                return;

            }


            Cursor res = myDb.getData(id);
            String data = null ,data2 = null ,data3 = null ,data4 = null, data5 = null, data6 = 
null, data7 = null, data8 = null;

            if (res.moveToFirst() ) {

                data = "" + res.getString(1);


            }

            editTextsmsi.setText(data);

            if (res.moveToFirst() ) {


                data2 = "" + res.getString(2);


            }

            editTextsmsc.setText(data2);

            if (res.moveToFirst() ) {


                data3 = "" + res.getString(3);

            }

            editTextsmsb.setText(data3);

            if (res.moveToFirst() ) {

                data4 = "" + res.getString(4);
            }
            editTextsmsm.setText(data4);

            if (res.moveToFirst() ) {

                data5 = "" + res.getString(5);

            }
            jobserialout.setText(data5);

            if (res.moveToFirst() ) {

                data6 = "" + res.getString(0);

            }
            timeinjob.setText(data6);

            if (res.moveToFirst() ) {

                data6 = "" + res.getString(0);

            }
            timeinjob.setText(data6);


        }


    });
}

private void showMessage(String title, String message) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.create();
    builder.setCancelable(true);
    builder.setTitle(title);
    builder.setMessage(message);
    builder.show();
}
}
android java.time
2个回答
0
投票

我认为您需要在下面的文本视图中显示时差。希望以下代码有助于清除您的疑问。

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");

date1 = simpleDateFormat.parse("00:57:18");
date2 = simpleDateFormat.parse("14:14:21");

long difference = date2.getTime() - date1.getTime();
hours = (int) ((difference - (1000*60*60)); 
min = (int) (difference - (1000*60*60*hours)) / (1000*60);
sec = (int) (difference - (1000*60*60*hours)) - (1000*60*min)) / (1000);
hours = (hours < 0 ? -hours : hours);
Log.i("======= Hours"," :: "+hours);
Log.i("======= Minutes"," :: "+min);
Log.i("======= Seconds"," :: "+sec);

0
投票

为了计算时间,我使用了这个:

long difference = date2.getTime() - date1.getTime(); 
days = (int) (difference / (1000*60*60*24));  
hours = (int) ((difference - (1000*60*60*24*days)) / (1000*60*60)); 
min = (int) (difference - (1000*60*60*24*days) - (1000*60*60*hours)) / (1000*60);

您可以使用以下代码将文本转换为Date对象

  DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
 Date dateObject;

try{
String dob=(tx.getText().toString());
dateObject = formatter.parse(dob);
date = new SimpleDateFormat("dd/MM/yyyy").format(dateObject);

}
© www.soinside.com 2019 - 2024. All rights reserved.