这是我的应用程序的屏幕截图,其中的时间为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();
}
}
我认为您需要在下面的文本视图中显示时差。希望以下代码有助于清除您的疑问。
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);
为了计算时间,我使用了这个:
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);
}