Edit in JSFiddle

function parseTime(timeStr, dt) {
    if (!dt) {
        dt = new Date();
    }

    var time = timeStr.match(/(\d+)(?::(\d\d))?\s*(p?)/i);
    if (!time) {
        return NaN;
    }
    var hours = parseInt(time[1], 10);
    if (hours == 12 && !time[3]) {
        hours = 0;
    }
    else {
        hours += (hours < 12 && time[3]) ? 12 : 0;
    }

    dt.setHours(hours);
    dt.setMinutes(parseInt(time[2], 10) || 0);
    dt.setSeconds(0, 0);
    return dt;
}

function addResult(dt) {
    $("#results").append("<li>" + dt + "</li>");
}

// all of these should print out 1300 hours in your local time
addResult(parseTime("1p"));
addResult(parseTime("1:00pm"));
addResult(parseTime("13:00"));

// should print 0600 hours
addResult(parseTime("6am"));
addResult(parseTime("6:00"));
<ul id="results"></ul>