Parse a human readable time string into a time based value.
npm install --save timestring
var timestring = require('timestring');
var str = '1h 15m';
var time = timestring(str);
console.log(time); // will log 4500
By default the returned time value from timestring
will be in seconds.
The time string can contain as many time groups as needed:
var str = '1d 3h 25m 18s';
var time = timestring(str);
console.log(time); // will log 98718
and can be as messy as you like:
var str = '1 d 3HOurS 25 min 1 8s';
var time = timestring(str);
console.log(time); // will log 98718
Timestring will parse the following keywords into time values:
ms, milli, millisecond, milliseconds
- will parse to millisecondss, sec, secs, second, seconds
- will parse to secondsm, min, mins, minute, minutes
- will parse to minutesh, hr, hrs, hour, hours
- will parse to hoursd, day, days
- will parse to daysw, week, weeks
- will parse to weeksmon, mth, mths, month, months
- will parse to monthsy, yr, yrs, year, years
- will parse to years
Keywords can be used interchangeably:
var str = '1day 15h 20minutes 15s';
var time = timestring(str);
console.log(time); // will log 141615
By default the return time value will be in seconds. This can be changed by passing one of the following strings as an argument to timestring
:
ms
- Millisecondss
- Secondsm
- Minutesh
- Hoursd
- Daysw
- Weeksmth
- Monthsy
- Years
var str = '22h 16m';
var hours = timestring(str, 'h'); // 22.266666666666666
var days = timestring(str, 'd'); // 0.9277777777777778
var weeks = timestring(str, 'w'); // 0.13253968253968254
A few assumptions are made by default:
- There are 24 hours per day
- There are 7 days per week
- There are 4 weeks per month
- There are 12 months per year
These options can be changed by passing an options object as an argument to timestring
.
The following options are configurable:
hoursPerDay
daysPerWeek
weeksPerMonth
monthsPerYear
var str = '1d';
var opts = {
hoursPerDay: 1
}
var time = timestring(str, 'h', opts);
console.log(time); // will log 1
In the example above hoursPerDay
is being set to 1
. When the time string is being parsed, the return value is being specified as hours. Normally 1d
would parse to 24
hours (as by default there are 24 hours in a day) but because hoursPerDay
has been set to 1
, 1d
will now only parse to 1
hour.
This would be useful for specific application needs.
Example - Employees of my company work 7.5 hours a day, and only work 5 days a week. In my time tracking app, when they type 1d
i want 7.5 hours to be tracked. When they type 1w
i want 5 days to be tracked etc.
var opts = {
hoursPerDay: 7.5,
daysPerWeek: 5
}
var hoursToday = timestring('1d', 'h', opts);
var daysThisWeek = timestring('1w', 'd', opts);
console.log(hoursToday); // will log 7.5
console.log(daysThisWeek); // will log 5