Convert Shorthand into Full Javascript or Moment Dates
Includes: - moment.js - QUnit
by tonytlwu
HTML
<script src="http://momentjs.com/downloads/moment.min.js"></script>
<script src="http://code.jquery.com/qunit/qunit-1.16.0.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.16.0.css">
<div id="qunit"></div>
<div id="qunit-fixture"></div>
JavaScript
// https://www.codementor.io/questions/6557861799?ref=email
function get_hour_and_minute(timeString) {
var hour = 0;
var minute = 0;
var afternoon = false;
var timeSeparator = /:|a|p/;
if (timeString.indexOf('p') > -1) {
afternoon = true;
}
if ( timeString.split(timeSeparator).length > 1 ) {
// Notation HH:MM or H:MM
timeParts = timeString.split(timeSeparator);
hour = parseInt(timeParts[0], 10) + (afternoon ? 12 : 0);
minute = parseInt(timeParts[1], 10);
} else {
if (parseInt(timeString, 10) > 99) {
// Notation HMM or HHMM
hour = parseInt( timeString.substr(0, (timeString.length > 3) ? 2 : 1), 10 ) + (afternoon ? 12 : 0);
minute = parseInt( timeString.substr(timeString.length-2, 2) );
} else if (parseInt(timeString, 10) < 100) {
// Notation H or HH
hour = parseInt(timeString, 10) + (afternoon ? 12 : 0);
minute = 0;
}
}
return (parseInt(timeString, 10) > 0) ? [hour, minute] : false;
}
function shorthand_to_datetimes(date, timeString) {
// date is moment.js moment representing the target date
// timeString can vary and is displayed below
// input 9-17 -> output [date + "09:00:00", date + "17:00:00"]
// input 9a-5p -> output [date + "09:00:00", date + "17:00:00"]
// input 11am-1pm -> output [date + "11:00:00, date + "13:00:00"]
// input 9:45-13:45 -> output [date + "09:45:00, date + "13:45:00"]
// input 9:45a-2p -> outout [date + "09:45:00, date + "14:00:00"]
// input 1215-235 -> output [date + "12:15:00, date + "14:35:00"]
// input 1030am-4pm -> output [date + "10:30:00, date + "16:00:00]
// input hello -> output -1
// input 1030am-4 -> output -1
var timeStringParts = timeString.split("-");
if (timeStringParts.length > 1) {
var...