Skip to content

Instantly share code, notes, and snippets.

@guyhughes
Created August 17, 2015 18:03
Show Gist options
  • Save guyhughes/b229597454091d53ea09 to your computer and use it in GitHub Desktop.
Save guyhughes/b229597454091d53ea09 to your computer and use it in GitHub Desktop.
momentjs humanized durations
// Uses moment js to parse human durations
// Author: Guy Hughes
// Date: 2015-08-17
function getPeriod(input) {
// returns an object {start: xxxx, end: xxxx}
// WARN: moment() methods modify object by reference
var start, end;
switch (input) {
case "Tomorrow":
start = moment().add(1,'day');
end = moment(start);
break;
case "Today":
start = moment();
end = moment(start);
break;
case "Yesterday":
start = moment().subtract(1,'day');
end = moment(start);
break;
case "Last Week":
start = moment().subtract(1, 'weeks').startOf("week");
end = moment(start).endOf("week");
break;
case "This Week":
start = moment().startOf("week");
end = moment(start).endOf("week");
break;
case "Next Week":
start = moment().add(1, 'weeks').startOf("week");
end = moment(start).endOf("week");
break;
case "Last Month":
start = moment().subtract(1,'months').startOf("month")
end = moment(start).endOf('month');
break;
case "This Month":
start = moment().startOf("month")
end = moment(start).endOf('month');
break;
case "This Year":
start = moment().startOf("year");
end = moment(start).endOf("year");
break;
default:
console.log("getPeriod: case statement fail. input=" + input);
return {};
break;
}
// return the dates in ISO format
return { start: start.format("YYYY/MM/DD"), end: end.format("YYYY/MM/DD") }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment