node-time
This module offers simple bindings for the C time.h APIs.
It also offers an extended native Date
object with getTimezone()
and setTimezone()
functions, which aren't normally part of JavaScript.
Installation
node-time
is available through npm:
$ npm install time
Example
var time = require('time');
var now = new time.Date();
now.setTimezone("America/Los_Angeles");
now.setTimezone("America/New_York");
var azDate = new time.Date(2010, 0, 1, 'America/Phoenix');
azDate.getTimezone();
Extending the global Date
object
node-time
provides a convenient time.Date
object, which is it's own Date
constructor independent from your own (or the global) Date object. There are often
times, however, when you would like the benefits of node-time on all Date
instances. To extend the global Date object, simply pass it in as an argument to
the node-time module when requiring:
var time = require('time')(Date);
var d = new Date();
d.setTimezone('UTC');
API
Date() -> Date
new time.Date()
new time.Date(millisecondsFromUTC)
new time.Date(dateString [, timezone ])
new time.Date(year, month, day [, hour, minute, second, millisecond ] [, timezone ])
A special Date
constructor that returns a "super" Date instance, that has
magic timezone capabilities! You can also pass a timezone
as the last
argument in order to have a Date instance in the specified timezone.
var now = new time.Date();
var another = new time.Date('Aug 9, 1995', 'UTC');
var more = new time.Date(1970, 0, 1, 'Europe/Amsterdam');
date.setTimezone(timezone [, relative ]) -> Undefined
Sets the timezone for the Date
instance. By default this function makes it so
that calls to getHours()
, getDays()
, getMinutes()
, etc. will be relative to
the timezone specified. If you pass true
in as the second argument, then
instead of adjusting the local "get" functions to match the specified timezone,
instead the internal state of the Date instance is changed, such that the local
"get" functions retain their values from before the setTimezone call.
date.setTimezone("America/Argentina/San_Juan")
a = new time.Date()
a.toString()
a.setTimezone('UTC')
a.toString()
b = new time.Date()
b.toString()
b.setTimezone('UTC', true)
b.toString()
date.getTimezone() -> String
Returns a String containing the currently configured timezone for the date instance.
This must be called after setTimezone()
has been called.
date.getTimezone();
date.getTimezoneAbbr() -> String
Returns the abbreviated timezone name, also taking daylight savings into consideration.
Useful for the presentation layer of a Date instance. This is a NON-STANDARD extension
to the Date object.
date.getTimezoneAbbr();
Date.parse(dateStr [, timezone ]) -> Number
Same as the native JavaScript Date.parse()
function, only this version allows
for a second, optional, timezone
argument, which specifies the timezone in
which the date string parsing will be resolved against. This function is also
aliased as time.parse()
.
time.Date.parse("1970, January 1");
time.Date.parse("1970, January 1", "Europe/Copenhagen");
time.Date.parse("1970, January 1", "UTC");
extend(date) -> Date
Transforms a "regular" Date instance into one of node-time
's "extended" Date instances.
var d = new Date();
time.extend(d);
d.setTimezone("UTC");
time() -> Number
Binding for time()
. Returns the number of seconds since Jan 1, 1900 UTC.
These two are equivalent:
time.time();
Math.floor(Date.now() / 1000);
tzset(timezone) -> Object
Binding for tzset()
. Sets up the timezone information that localtime()
will
use based on the specified timezone variable, or the current process.env.TZ
value if none is specified. Returns an Object containing information about the
newly set timezone, or throws an Error if no timezone information could be loaded
for the specified timezone.
time.tzset('US/Pacific');
Binding for localtime()
. Accepts a Number with the number of seconds since the
Epoch (i.e. the result of time()
), and returns a "broken-down" Object
representation of the timestamp, according the the currently configured timezone
(see tzset()
).
time.localtime(Date.now()/1000);
currentTimezone -> String
The currentTimezone
property always contains a String to the current timezone
being used by node-time
. This property is reset every time the tzset()
function is called. Individual time.Date
instances may have independent
timezone settings than what this one is...