i have created two text box which will take time as input from user i want when user press tab key the value of text box converted to 24 hour format
i have written a method
function getFormattedTime(value) {
var time = j$.trim(value);
var len = time.length;
var result = "";
var pos = time.indexOf(":");
if (pos < 0) {
pos = time.indexOf(".");
}
if (time.indexOf('m') < 0 && pos < 0 && parseInt(time) > 12
&& parseInt(time) < 12) {
time = time + 'm';
}
if (time.indexOf('m') > 0) {
time = parseFloat(time.substring(0, time.indexOf('m')));
if (isNaN(time)) {
window
.alert("Hours entered is invalid [00:00] or [00.00] or [00h] or [00m]");
return "";
} else {
if (time > 59) {
result = parseInt(time / 60);
result = result + ":" + (time - (result * 60));
} else {
result = "00:"
+ (parseFloat(time) <= 9 ? "0" + time : time);
}
}
return result;
}
var hour = "00";
if (time.charAt(0) == '0') {
hour = '0'
+ (parseFloat(time.substring(1, 2)) ? parseFloat(time
.substring(1, 2)) : '0');
} else {
hour = (parseFloat(time.substring(0, 2)) ? parseFloat(time
.substring(0, 2)) : '00');
hour = (hour > 24 ? 24 : (hour < 10 ? (hour == 0 ? '00' : '0'
+ hour) : hour));
}
var mins = "00";
if (pos != -1) {
if (time.charAt(pos + 1) == '0') {
mins = '0'
+ (parseFloat(time.substring(pos + 2, pos + 3))
? parseFloat(time.substring(pos + 2, pos + 3))
: '0');
} else {
mins = (parseFloat(time.substring(pos + 1, 5))
? parseFloat(time.substring(pos + 1, 5))
: '00');
mins = (mins >= 60 ? 59 : (mins < 10 ? (mins >= 6 ? 59 : mins
+ '0') : mins));
mins = (hour == 24 ? 45 : mins);
}
}
result = hour + ":" + mins;
return result;
}
It is working fine for following format
1.) 0 – 00:00
2.) 9.3 – 09:30
3.) 13.3 – 13:30
4.) 9 – 09:00
but when i enter
1352 it should give me 13:52 but it is giving 13:00
where i did wrong any help ?
What happens when
posis -1? Well, whenposis -1, you’re left with:How does
posend up being -1? Well, any time thattimedoesn’t contain a colon or period:In particular,
minswill be"00"whentimeis 1352. You need anelsebranch on your finalifto handle the case when there is no colon or period.