Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A wrapper object for the javascript built-in Date object with the missing setTimeZoneOffset() method intended to use with Node.js
branch: master

Merge pull request #1 from node-migrator-bot/clean

Hi! I fixed some calls to "sys" for you!
Failed to load latest commit information.
examples [fix] Changed require('sys') to require('util') for compatibility wit…
lib rewriting the whole script in a bit more elegant ways
test rewriting the whole script in a bit more elegant ways
LISENCE first commit
README.md [fix] Changed require('sys') to require('util') for compatibility wit…
index.js
package.json

README.md

DateZ

DateZ is a wrapper object for the built-in Javascript Date object with the missing setTimezoneOffset() method enhancement intended to use for server-side Javascript with Node.js.

With Node.js, you might want to do a lot of HTML content generation on the server-side, but then generating the right Dates for client-side timezones becomes pain in the ass since the built-in Javascript Date object is lacking the appropreate timezone setter method and all you can get is the UTC/GMT based time and the local time where the remote server is located (not the client-machines where the time format should be tuned for). You can use DateZ.setTimezoneOffset() to shift the timezones of a Date object, and the rest works just like the built-in Date object. (This doesn't, of course, autotune the timezones for the client locations. You still need to specify a timezone the Date object is converted to.)

Installation

for now, DateZ is intended to use in server-side scripts with Node.js (as i needed it). You can use npm for easy installation.

npm install DateZ

there is no reason not to use the same DateZ object for client-side scripting, so it is to be done in the future implementation.(i guess...)

Usage

DateZ has all the methods the Built-in Date object has, and works exactly the same except for the setTimezoneOffset addition described below.

.setTimezoneOffset( timezoneOffset, [ timezoneAbbreviation ] );

timezonOffset should be equivalent to the value you can get from Date.getTimezoneOffset().

i.e. GMT-0800 => 480, GMT+0900 => -540

timezoneAbbreviation is optional, and can be any string value. (You can even set "Mars Daylight savind Time" if you wish.) If not given here, timezone abbreviations will be omitted from the return values of any string related methods, such as toString(), toLocalString() and toTimeString(). Timezone values and their abbreviations are in one-to-many relationships, so there isn't an absolute way to pick out just one abbreviation unless you specify which abbreviation you mean to use.

var util = require('util'); 
var DateZ = require('DateZ').DateZ;

//suppose your remote server is somewhere in PST zone, which is represented as GMT-0800
var now = new Date(); //built-in
var nowZ = new DateZ(); //Z stands for time"Z"one btw

util.puts(now.toString());
util.puts(nowZ.toString());

//now change the timezone of nowZ for JST(GMT+0900)
nowZ.setTimezoneOffset(-540);

util.puts(now.toString());
util.puts(nowZ.toString());

//note that timezone abbreviations are omitted unless you explicitly specify with setTimezoneOffset
nowZ.setTimezoneOffset(-540, 'JST');
util.puts(nowZ.toString());

and that's about it for now.

Something went wrong with that request. Please try again.