"time.h" bindings for Node.js


"time.h" bindings for Node.js.

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.

node-time is available through npm:

$ npm install time
var time = require('time');
// Create a new Date instance, representing the current instant in time 
var now = new time.Date();
// `.getDate()`, `.getDay()`, `.getHours()`, etc. 
// will return values according to UTC-8 
// `.getDate()`, `.getDay()`, `.getHours()`, etc. 
// will return values according to UTC-5 
// You can also set the timezone during instantiation 
var azDate = new time.Date(2010, 0, 1, 'America/Phoenix');
azDate.getTimezone(); // 'America/Phoenix' 

node-time provides a convenient time.Date object, which is its 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();

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');

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.

// Default behavior: 
= new time.Date()
// 'Wed Aug 31 2011 09:45:31 GMT-0700 (PDT)' 
// 'Wed Aug 31 2011 16:45:31 GMT+0000 (UTC)' 
// Relative behavior: 
= new time.Date()
// 'Wed Aug 31 2011 10:48:03 GMT-0700 (PDT)' 
b.setTimezone('UTC', true)
// 'Wed Aug 31 2011 10:48:03 GMT+0000 (UTC)' 

Returns a String containing the currently configured timezone for the date instance. This must be called after setTimezone() has been called.

  // "America/Argentina/San_Juan" 

Returns the abbreviated timezone name, also taking daylight savings into consideration. Useful for the presentation layer of a Date instance.

  // "ART" 

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");  // <- Local Time 
  // 28800000 
time.Date.parse("1970, January 1", "Europe/Copenhagen");
  // -3600000 
time.Date.parse("1970, January 1", "UTC");
  // 0 

Transforms a "regular" Date instance into one of node-time's "extended" Date instances.

var d = new Date();
// `d.setTimezone()` does not exist... 

Binding for time(). Returns the number of seconds since Jan 1, 1900 UTC. These two are equivalent:

  // 1299827226 
Math.floor(Date.now() / 1000);
  // 1299827226 

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.

  // { tzname: [ 'PST', 'PDT' ], 
  //   timezone: 28800, 
  //   daylight: 1 } 

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()).

  // { seconds: 38, 
  //   minutes: 7, 
  //   hours: 23, 
  //   dayOfMonth: 10, 
  //   month: 2, 
  //   year: 111, 
  //   dayOfWeek: 4, 
  //   dayOfYear: 68, 
  //   isDaylightSavings: false, 
  //   gmtOffset: -28800, 
  //   timezone: 'PST' } 

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...