The JTable includes the time field, e.g. \"01:50\". I need to read this value into the integer variable. For this I´d like to convert time into minutes. For instance \"01:50
Look the sample below which we are using in our application
public static int toMinutes( String sDur, boolean bAssumeMinutes ) throws NumberFormatException {
/* Use of regular expressions might be better */
int iMin = 0;
int iHr = 0;
sDur = sDur.trim();
//find punctuation
int i = sDur.indexOf(":");//HH:MM
if (i < 0) {
//no punctuation, so assume whole thing is an number
//double dVal = Double.parseDouble(sDur);
double dVal = ParseAndBuild.parseDouble(sDur, Double.NaN);
if (Double.isNaN(dVal)) throw new NumberFormatException(sDur);
if (!bAssumeMinutes) {
//decimal hours so add half a minute then truncate to minutes
iMin = (int)((dVal * 60.0) + (dVal < 0 ? -0.5 : 0.5));
} else {
iMin = (int)dVal;
}
}
else {
StringBuffer sBuf = new StringBuffer(sDur);
int j = sBuf.indexOf(MINUS_SIGN);
//check for negative sign
if (j >= 0) {
//sign must be leading/trailing but either allowed regardless of MINUS_SIGN_TRAILS
if (j > 0 && j < sBuf.length() -1)
throw new NumberFormatException(sDur);
sBuf.deleteCharAt(j);
i = sBuf.indexOf(String.valueOf(":"));
}
if (i > 0)
iHr = Integer.parseInt(sBuf.substring(0, i)); //no thousands separators allowed
if (i < sBuf.length() - 1)
iMin = Integer.parseInt(sBuf.substring(i+1));
if (iMin < 0 || (iHr != 0 && iMin >= 60))
throw new NumberFormatException(sDur);
iMin += iHr * 60;
if (j >= 0) iMin = -iMin;
}
return iMin;
}