I'm working in this code for about 12 hors now, and still can't make it work. DISCLAIMER: I'm working with Date -not Calendar, nor Instant- because I'm codding for API 15 (my smartphone).
This is what I want to do:
I have several EditView(s) where user can write. Example
EditText StartDateEditText = (EditText) findViewById(R.id.getStartDate_editText);
EditText EndDateEditText = (EditText) findViewById(R.id.getEndDate_editText);
EditText StartHourEditText = (EditText) findViewById(R.id.getStartHour_editText);
I need to recover that info (String) and convert it into date/time. Example:
SimpleDateFormat StartFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");
String StartAssembled = StartDateToString + " " + StartTimeToString;
Date StartMoment = null;
try {
StartMoment = StartFormat.parse(StartAssembled);
} catch (ParseException e) {
e.printStackTrace();
}
Lastly, I need to find time elapsed and show it:
long difference = EndMoment.getTime() - StartMoment.getTime();
long differenceSeconds = difference / 1000;
long differenceMinutes = differenceSeconds % 60;
long differenceHours = differenceSeconds % (60 * 60);
String differenceToString = "Hours: " + String.valueOf(differenceHours) +
" Minutes: " + String.valueOf(differenceMinutes) +
" Seconds: " + String.valueOf(differenceSeconds);
Log.v("MainActivity:", differenceToString);
Now, user inputs_ Start 29/09/2017 12:01 End 29/09/2017 16:31
And I get...
09-29 15:23:54.213 7798-7798/com.example.android.timeismoney V/MainActivity: Hours: 0 Minutes: 0 Seconds: 0
By the way: same verbose comes out from StartJobDate - EndJobDate
But it should log: Hours: 4 Minutes: 30 Seconds: 0
I'm new to java and newer to time managing. Would apreciate any help. Any advices or hints to do this better?
Following, I copy and comment my code:
Imports and such:
package com.example.android.timeismoney;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
Method named "cosa" (english "thing") because is my playground. Called from onClick in a button in xml.
public void cosa(View view) {
From here I focus EditText(s)
EditText StartDateEditText = (EditText) findViewById(R.id.getStartDate_editText);
EditText EndDateEditText = (EditText) findViewById(R.id.getEndDate_editText);
EditText StartHourEditText = (EditText) findViewById(R.id.getStartHour_editText);
EditText StartMinuteEditText = (EditText) findViewById(R.id.getStartMinute_editText);
EditText EndHourEditText = (EditText) findViewById(R.id.getEndHour_editText);
EditText EndMinuteEditText = (EditText) findViewById(R.id.getEndMinute_editText);
Now I recover text
String StartDateToString = StartDateEditText.getText().toString();
String StartTimeToString = StartHourEditText.getText().toString() +
":" + StartHourEditText.getText().toString();
String EndDateToString = EndDateEditText.getText().toString();
String EndTimeToString = EndHourEditText.getText().toString() +
":" + EndHourEditText.getText().toString();
Here I set Date vars and fill them with data from EditText(s)
SimpleDateFormat StartFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");
String StartAssembled = StartDateToString + " " + StartTimeToString;
Date StartMoment = null;
try {
StartMoment = StartFormat.parse(StartAssembled);
} catch (ParseException e) {
e.printStackTrace();
}
SimpleDateFormat EndFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");
String EndAssembled = EndDateToString + " " + EndTimeToString;
Date EndMoment = null;
try {
EndMoment = EndFormat.parse(EndAssembled);
} catch (ParseException e) {
e.printStackTrace();
}
Now I operate and get milliseconds. I convert them. Then, show them.
long difference = StartMoment.getTime() - EndMoment.getTime();
long differenceSeconds = difference / 1000;
long differenceMinutes = difference / (60 * 1000);
long differenceHours = difference / (1000 * 60 * 60);
String differenceToString = "Hours: " + String.valueOf(differenceHours) +
" Minutes: " + String.valueOf(differenceMinutes) +
" Seconds: " + String.valueOf(differenceSeconds);
Log.v("MainActivity:cosa()", differenceToString);
}
Here my entire MainActivity.java: https://github.com/Hinuden/ShowAndTell/commits/master/TimeIsMoney29-09-2017-MainActivity.java
Here my entire activity_main.xml: https://github.com/Hinuden/ShowAndTell/blob/master/TimeIsMoney-29-09-2017-activity_main.xml
Thanks for help.