dojox
Version:
Dojo eXtensions, a rollup of many useful sub-projects and varying states of maturity – from very stable and robust, to alpha and experimental. See individual projects contain README files for details.
83 lines (73 loc) • 5.75 kB
JavaScript
dojo.provide("dojox.date.tests.timezoneFormatting");
dojo.require("dojox.date.timezone");
dojo.require("dojo.date");
tests.register("dojox.date.tests.timezoneFormatting",
[
{
name: "timezone format",
setUp: function(){
var partLocaleList = ["en-us", "fr-fr", "es", "de-at", "ja-jp", "zh-cn"];
dojo.forEach(partLocaleList, function(locale){
dojo.requireLocalization("dojo.cldr", "gregorian", locale);
});
},
runTest: function(t){
var date = new Date(1155257712345);
// This translates to:
// GMT Friday, August 11, 2006 at 00:55:12 GMT
// Denver Thursday, August 10, 2006 at 6:55:12 PM MDT
// Anchorage Thursday, August 10, 2006 at 4:55:12 PM AKDT
// Jerusalem Friday, August 11, 2006 at 3:55:12 AM IDT
// Sydney Friday, August 11, 2006 at 10:55:12 AM EST
// Tokyo Friday, August 11, 2006 at 9:55:12 AM JST
// Shanghai Friday, August 11, 2006 at 8:55:12 AM CST
// Paris Friday, August 11, 2006 at 2:55:12 AM CEST
// Vienna Friday, August 11, 2006 at 2:55:12 AM CEST
// Madrid Friday, August 11, 2006 at 2:55:12 AM CEST
//////////////////////
// Custom Selector:
var selectorOpts = {formatLength: "long", datePattern: "EEEE, MMMM d, y", timePattern: "HH:mm:ss z", locale: "en-us"};
doh.is("Friday, August 11, 2006 at 00:55:12 GMT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'GMT'})));
doh.is("Thursday, August 10, 2006 at 18:55:12 MDT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'America/Denver'})));
doh.is("Thursday, August 10, 2006 at 16:55:12 AKDT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'America/Anchorage'})));
doh.is("Friday, August 11, 2006 at 03:55:12 IDT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'Asia/Jerusalem'})));
doh.is("Friday, August 11, 2006 at 10:55:12 EST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'Australia/Sydney'})));
doh.is("Friday, August 11, 2006 at 09:55:12 JST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'Asia/Tokyo'})));
doh.is("Friday, August 11, 2006 at 08:55:12 CST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'Asia/Shanghai'})));
doh.is("Friday, August 11, 2006 at 02:55:12 CEST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'Europe/Madrid'})));
//////////////////////
// Full Selectors:
// New York (in en-us)
doh.is("Thursday, August 10, 2006 at 8:55:12 PM EDT", dojo.date.locale.format(date, {formatLength:'full',locale:'en-us',timezone:'America/New_York'}));
// Tokyo (in ja-jp)
doh.is("2006\u5e748\u670811\u65e5\u91d1\u66dc\u65e5 9\u664255\u520612\u79d2 JST", dojo.date.locale.format(date, {formatLength:'full',locale:'ja-jp',timezone:'Asia/Tokyo'}));
// Shanghai (in zh-cn)
doh.is("2006\u5e748\u670811\u65e5\u661f\u671f\u4e94CST\u4e0a\u53488:55:12", dojo.date.locale.format(date, {formatLength:'full',locale:'zh-cn',timezone:'Asia/Shanghai'}));
// Paris (in fr-fr)
doh.is("vendredi 11 août 2006 02:55:12 CEST", dojo.date.locale.format(date, {formatLength:'full',locale:'fr-fr',timezone:'Europe/Paris'}));
// Vienna (in de-at)
doh.is("Freitag, 11. August 2006 02:55:12 CEST", dojo.date.locale.format(date, {formatLength:'full',locale:'de-at',timezone:'Europe/Vienna'}));
// Madrid (in es)
doh.is("viernes, 11 de agosto de 2006 02:55:12 CEST", dojo.date.locale.format(date, {formatLength:'full',locale:'es',timezone:'Europe/Madrid'}));
//////////////////////
// Tricky Dates:
date = new Date(1225605599000); // 1 second before New York goes off DST - NY and LA are 3 hours apart
selectorOpts = {formatLength: "full", locale: "en-us"};
doh.is("Sunday, November 2, 2008 at 1:59:59 AM EDT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/New_York'})));
doh.is("Saturday, November 1, 2008 at 10:59:59 PM PDT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/Los_Angeles'})));
date = new Date(1225605600000); // New York goes off DST - NY and LA are 2 hours apart
doh.is("Sunday, November 2, 2008 at 1:00:00 AM EST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/New_York'})));
doh.is("Saturday, November 1, 2008 at 11:00:00 PM PDT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/Los_Angeles'})));
date = new Date(1225616400000); // LA goes off DST - NY and LA are 3 hours apart again
doh.is("Sunday, November 2, 2008 at 4:00:00 AM EST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/New_York'})));
doh.is("Sunday, November 2, 2008 at 1:00:00 AM PST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/Los_Angeles'})));
date = new Date(1257062399000); // Denver on DST - Denver is 1 hr ahead of Phoenix
doh.is("Sunday, November 1, 2009 at 1:59:59 AM MDT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/Denver'})));
doh.is("Sunday, November 1, 2009 at 12:59:59 AM MST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/Phoenix'})));
date = new Date(1257062400000); // Denver off DST - Denver is same time as Phoenix
doh.is("Sunday, November 1, 2009 at 1:00:00 AM MST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/Denver'})));
doh.is("Sunday, November 1, 2009 at 1:00:00 AM MST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/Phoenix'})));
}
}
]
);