tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

format_timeZone.js (2900B)


      1 // |reftest| skip-if(!this.hasOwnProperty("Intl"))
      2 
      3 const defaultLocale = "en-US";
      4 const defaultDate = Date.UTC(2012, 12-1, 6, 12, 0, 0);
      5 const defaultOptions = {
      6    year: "numeric", month: "numeric", day: "numeric",
      7    hour: "numeric", minute: "numeric", second: "numeric",
      8 };
      9 const longFormatOptions = Object.assign({}, defaultOptions, {
     10    month: "long"
     11 });
     12 const tzNameFormatOptions = Object.assign({}, defaultOptions, {
     13    timeZoneName: "short"
     14 });
     15 
     16 const tzMapper = [
     17    x => x,
     18    x => x.toUpperCase(),
     19    x => x.toLowerCase(),
     20 ];
     21 
     22 const tests = [
     23    {
     24        timeZone: "UTC",
     25        result: "12/6/2012, 12:00:00 PM",
     26    },
     27    {
     28        timeZone: "America/Los_Angeles",
     29        result: "12/6/2012, 4:00:00 AM",
     30    },
     31    {
     32        timeZone: "America/New_York",
     33        options: tzNameFormatOptions,
     34        result: "12/6/2012, 7:00:00 AM EST",
     35    },
     36    {
     37        timeZone: "America/Caracas",
     38        result: "12/6/2012, 7:30:00 AM",
     39    },
     40    {
     41        timeZone: "Europe/London",
     42        result: "12/6/2012, 12:00:00 PM",
     43    },
     44    {
     45        timeZone: "Africa/Casablanca",
     46        locale: "ar-MA-u-ca-islamicc", options: longFormatOptions,
     47        result: "22 محرم 1434 هـ في 12:00:00",
     48    },
     49    {
     50        timeZone: "Europe/Berlin",
     51        locale: "de-DE", options: tzNameFormatOptions,
     52        result: "6.12.2012, 13:00:00 MEZ",
     53    },
     54    {
     55        timeZone: "Asia/Kathmandu",
     56        result: "12/6/2012, 5:45:00 PM",
     57    },
     58    {
     59        timeZone: "Asia/Bangkok",
     60        locale: "th-th-u-nu-thai", options: longFormatOptions,
     61        result: "๖ ธันวาคม ๒๕๕๕ เวลา ๑๙:๐๐:๐๐",
     62    },
     63    {
     64        timeZone: "Asia/Tokyo",
     65        locale: "ja-JP", options: longFormatOptions,
     66        result: "2012年12月6日 21:00:00",
     67    },
     68    {
     69        timeZone: "Australia/Lord_Howe",
     70        result: "12/6/2012, 11:00:00 PM",
     71    },
     72    {
     73        timeZone: "Australia/Lord_Howe",
     74        date: Date.UTC(2012, 7-1, 6, 12, 0, 0),
     75        result: "7/6/2012, 10:30:00 PM",
     76    },
     77    {
     78        timeZone: "Pacific/Kiritimati",
     79        date: Date.UTC(1978, 12-1, 6, 12, 0, 0),
     80        result: "12/6/1978, 1:20:00 AM",
     81    },
     82    {
     83        timeZone: "Africa/Monrovia",
     84        date: Date.UTC(1971, 12-1, 6, 12, 0, 0),
     85        result: "12/6/1971, 11:15:30 AM",
     86    },
     87    {
     88        timeZone: "Asia/Riyadh",
     89        date: Date.UTC(1946, 12-1, 6, 12, 0, 0),
     90        result: "12/6/1946, 3:06:52 PM",
     91    },
     92 ];
     93 
     94 for (let {timeZone, result, locale = defaultLocale, date = defaultDate, options = defaultOptions} of tests) {
     95    for (let map of tzMapper) {
     96        let dtf = new Intl.DateTimeFormat(locale, Object.assign({timeZone: map(timeZone)}, options));
     97        assertEq(dtf.format(date), result);
     98        assertEq(dtf.resolvedOptions().timeZone, timeZone);
     99    }
    100 }
    101 
    102 
    103 if (typeof reportCompare === "function")
    104    reportCompare(0, 0, "ok");