Chronoshift
Chronoshift is a library to manipulate time with timezones
Installation
In node simply run: npm install chronoshift
In the browser you should use the browserified package/chronoshift.js
Usage
Chronoshift can be used in two ways:
1. By using the provided floor, ceil, and move methods
Use chronoshift[period][fn](date, timezone, moveAmount)
where
period
is one of ['year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond']
fn
is one of ['floor, ceil, move']
var tz = Timezone.fromJS("America/Los_Angeles");
var hourStart = chronoshift.hour.floor(new Date("2012-11-04T00:30:00-07:00"), tz));
hourStart.getTime() === new Date("2012-11-04T00:00:00-07:00").getTime()
2. By using the Duration class
Construct a new duration with a ISO Duration string. Then you can call floor
, ceil
and move
on it.
Note that floor
and ceil
only work for 'simple' durations like "P1x" and "PT1x".
var Duration = chronoshift.Duration;
var tz = Timezone.fromJS("America/Los_Angeles");
p1w = Duration.formJS('P1W');
var weekStart;
weekStart = p1w.floor(new Date("2013-09-29T01:02:03.456-07:00"), tz)
weekStart.getTime() === new Date("2013-09-29T00:00:00.000-07:00").getTime()
weekStart = p1w.floor(new Date("2013-10-03T01:02:03.456-07:00"), tz)
weekStart.getTime() === new Date("2013-09-29T00:00:00.000-07:00").getTime()
A duration can also be constructed from two dates and a timezone:
new Duration(
new Date("2012-10-29T00:00:00-07:00")
new Date("2012-11-05T00:00:00-08:00")
tz
).toString()
new Duration(
new Date("2012-01-01T00:00:00-08:00")
new Date("2013-03-04T04:05:06-08:00")
tz
).toString()
Useful!
Development
Clone the repository :
$ git clone https://github.com/implyio/chronoshift.git
Install the dependencies :
$ npm install
Watch :
$ npm run watch
Questions & Support
Please file bugs and feature requests by opening and issue on GitHub and direct all questions to our user groups.