I went ahead and created a function myself since something else doesn't seem to exist.
function parseDate(date)
{
if(date == "now" || date == "")
{
return new Date();
}
if(date.charAt("0") == "+")
{
date.replace("+", "");
var cmp = date.split(" ");
if(cmp[1].indexOf("seconds") > -1)
{
return new Date((new Date()).getTime() + (cmp[0] * 1000));
}
else if(cmp[1].indexOf("minutes") > -1)
{
return new Date((new Date()).getTime() + (cmp[0] * 60 * 1000));
}
else if(cmp[1].indexOf("hours") > -1)
{
return new Date((new Date()).getTime() + (cmp[0] * 60 * 60 * 1000));
}
else if(cmp[1].indexOf("days") > -1)
{
return new Date((new Date()).getTime() + (cmp[0] * 60 * 60 * 24 * 1000));
}
else if(cmp[1].indexOf("weeks") > -1)
{
return new Date((new Date()).getTime() + (cmp[0] * 60 * 60 * 24 * 7 * 1000));
}
else if(cmp[1].indexOf("months") > -1)
{
return new Date((new Date()).getTime() + (cmp[0] * 60 * 60 * 24 * 30 * 1000));
}
else if(cmp[1].indexOf("years") > -1)
{
return new Date((new Date()).getTime() + (cmp[0] * 60 * 60 * 24 * 365 * 1000));
}
}
if(date.charAt("0") == "-")
{
var cmp = date.split(" ");
if(cmp[1].indexOf("seconds") > -1)
{
return new Date((new Date()).getTime() + (cmp[0] * 1000));
}
else if(cmp[1].indexOf("minutes") > -1)
{
return new Date((new Date()).getTime() + (cmp[0] * 60 * 1000));
}
else if(cmp[1].indexOf("hours") > -1)
{
return new Date((new Date()).getTime() + (cmp[0] * 60 * 60 * 1000));
}
else if(cmp[1].indexOf("days") > -1)
{
return new Date((new Date()).getTime() + (cmp[0] * 60 * 60 * 24 * 1000));
}
else if(cmp[1].indexOf("weeks") > -1)
{
return new Date((new Date()).getTime() + (cmp[0] * 60 * 60 * 24 * 7 * 1000));
}
else if(cmp[1].indexOf("months") > -1)
{
return new Date((new Date()).getTime() + (cmp[0] * 60 * 60 * 24 * 30 * 1000));
}
else if(cmp[1].indexOf("years") > -1)
{
return new Date((new Date()).getTime() + (cmp[0] * 60 * 60 * 24 * 365 * 1000));
}
}
return new Date(date);
}
This accepts the following inputs:
"now" | "": returns current date
Datestring: returns corresponding date (this already worked in new Date(dateString))
[+ | -][#] [timevar]: returns current time [+ | -] [#] of [timevar]
e.g. "+30 seconds"