Altair200333

timezone inference

May 9th, 2024
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import numberToTimezone from "phone-number-to-timezone";
  2. import { DateTime } from "luxon";
  3.  
  4. // console.log( numberToTimezone.getLocalInfo("16783616626"));
  5.  
  6. const usStateToNumbers = {
  7.     "Alabama": [
  8.         205,
  9.         251,
  10.         256,
  11.         334,
  12.         659,
  13.         938
  14.     ],
  15.     "Alaska": [
  16.         907
  17.     ],
  18.     "Arizona": [
  19.         480,
  20.         520,
  21.         602,
  22.         623,
  23.         928
  24.     ],
  25.     "Arkansas": [
  26.         327,
  27.         479,
  28.         501,
  29.         870
  30.     ],
  31.     "California": [
  32.         209,
  33.         213,
  34.         279,
  35.         310,
  36.         323,
  37.         341,
  38.         350,
  39.         369,
  40.         408,
  41.         415,
  42.         424,
  43.         442,
  44.         510,
  45.         530,
  46.         559,
  47.         562,
  48.         619,
  49.         626,
  50.         628,
  51.         650,
  52.         657,
  53.         661,
  54.         669,
  55.         707,
  56.         714,
  57.         738,
  58.         747,
  59.         760,
  60.         805,
  61.         818,
  62.         820,
  63.         831,
  64.         840,
  65.         858,
  66.         909,
  67.         916,
  68.         925,
  69.         949,
  70.         951
  71.     ],
  72.     "Colorado": [
  73.         303,
  74.         719,
  75.         720,
  76.         970,
  77.         983
  78.     ],
  79.     "Connecticut": [
  80.         203,
  81.         475,
  82.         860,
  83.         959
  84.     ],
  85.     "Delaware": [
  86.         302
  87.     ],
  88.     "Florida": [
  89.         239,
  90.         305,
  91.         321,
  92.         324,
  93.         352,
  94.         386,
  95.         407,
  96.         448,
  97.         561,
  98.         645,
  99.         656,
  100.         689,
  101.         727,
  102.         728,
  103.         754,
  104.         772,
  105.         786,
  106.         813,
  107.         850,
  108.         863,
  109.         904,
  110.         941,
  111.         954
  112.     ],
  113.     "Georgia": [
  114.         229,
  115.         404,
  116.         470,
  117.         478,
  118.         678,
  119.         706,
  120.         762,
  121.         770,
  122.         912,
  123.         943
  124.     ],
  125.     "Hawaii": [
  126.         808
  127.     ],
  128.     "Idaho": [
  129.         208,
  130.         986
  131.     ],
  132.     "Illinois": [
  133.         217,
  134.         224,
  135.         309,
  136.         312,
  137.         331,
  138.         447,
  139.         464,
  140.         618,
  141.         630,
  142.         708,
  143.         730,
  144.         773,
  145.         779,
  146.         815,
  147.         847,
  148.         861,
  149.         872
  150.     ],
  151.     "Indiana": [
  152.         219,
  153.         260,
  154.         317,
  155.         463,
  156.         574,
  157.         765,
  158.         812,
  159.         930
  160.     ],
  161.     "Iowa": [
  162.         319,
  163.         515,
  164.         563,
  165.         641,
  166.         712
  167.     ],
  168.     "Kansas": [
  169.         316,
  170.         620,
  171.         785,
  172.         913
  173.     ],
  174.     "Kentucky": [
  175.         270,
  176.         364,
  177.         502,
  178.         606,
  179.         859
  180.     ],
  181.     "Louisiana": [
  182.         225,
  183.         318,
  184.         337,
  185.         457,
  186.         504,
  187.         985
  188.     ],
  189.     "Maine": [
  190.         207
  191.     ],
  192.     "Maryland": [
  193.         227,
  194.         240,
  195.         301,
  196.         410,
  197.         443,
  198.         667
  199.     ],
  200.     "Massachusetts": [
  201.         339,
  202.         351,
  203.         413,
  204.         508,
  205.         617,
  206.         774,
  207.         781,
  208.         857,
  209.         978
  210.     ],
  211.     "Michigan": [
  212.         231,
  213.         248,
  214.         269,
  215.         313,
  216.         517,
  217.         586,
  218.         616,
  219.         679,
  220.         734,
  221.         810,
  222.         906,
  223.         947,
  224.         989
  225.     ],
  226.     "Minnesota": [
  227.         218,
  228.         320,
  229.         507,
  230.         612,
  231.         651,
  232.         763,
  233.         924,
  234.         952
  235.     ],
  236.     "Mississippi": [
  237.         228,
  238.         601,
  239.         662,
  240.         769
  241.     ],
  242.     "Missouri": [
  243.         235,
  244.         314,
  245.         417,
  246.         557,
  247.         573,
  248.         636,
  249.         660,
  250.         816,
  251.         975
  252.     ],
  253.     "Montana": [
  254.         406
  255.     ],
  256.     "Nebraska": [
  257.         308,
  258.         402,
  259.         531
  260.     ],
  261.     "Nevada": [
  262.         702,
  263.         725,
  264.         775
  265.     ],
  266.     "New Hampshire": [
  267.         603
  268.     ],
  269.     "New Jersey": [
  270.         201,
  271.         551,
  272.         609,
  273.         640,
  274.         732,
  275.         848,
  276.         856,
  277.         862,
  278.         908,
  279.         973
  280.     ],
  281.     "New Mexico": [
  282.         505,
  283.         575
  284.     ],
  285.     "New York": [
  286.         212,
  287.         315,
  288.         329,
  289.         332,
  290.         347,
  291.         363,
  292.         516,
  293.         518,
  294.         585,
  295.         607,
  296.         624,
  297.         631,
  298.         646,
  299.         680,
  300.         716,
  301.         718,
  302.         838,
  303.         845,
  304.         914,
  305.         917,
  306.         929,
  307.         934
  308.     ],
  309.     "North Carolina": [
  310.         252,
  311.         336,
  312.         472,
  313.         704,
  314.         743,
  315.         828,
  316.         910,
  317.         919,
  318.         980,
  319.         984
  320.     ],
  321.     "North Dakota": [
  322.         701
  323.     ],
  324.     "Ohio": [
  325.         216,
  326.         220,
  327.         234,
  328.         283,
  329.         326,
  330.         330,
  331.         380,
  332.         419,
  333.         436,
  334.         440,
  335.         513,
  336.         567,
  337.         614,
  338.         740,
  339.         937
  340.     ],
  341.     "Oklahoma": [
  342.         405,
  343.         539,
  344.         572,
  345.         580,
  346.         918
  347.     ],
  348.     "Oregon": [
  349.         458,
  350.         503,
  351.         541,
  352.         971
  353.     ],
  354.     "Pennsylvania": [
  355.         215,
  356.         223,
  357.         267,
  358.         272,
  359.         412,
  360.         445,
  361.         484,
  362.         570,
  363.         582,
  364.         610,
  365.         717,
  366.         724,
  367.         814,
  368.         835,
  369.         878
  370.     ],
  371.     "Rhode Island": [
  372.         401
  373.     ],
  374.     "South Carolina": [
  375.         803,
  376.         821,
  377.         839,
  378.         843,
  379.         854,
  380.         864
  381.     ],
  382.     "South Dakota": [
  383.         605
  384.     ],
  385.     "Tennessee": [
  386.         423,
  387.         615,
  388.         629,
  389.         731,
  390.         865,
  391.         901,
  392.         931
  393.     ],
  394.     "Texas": [
  395.         210,
  396.         214,
  397.         254,
  398.         281,
  399.         325,
  400.         346,
  401.         361,
  402.         409,
  403.         430,
  404.         432,
  405.         469,
  406.         512,
  407.         682,
  408.         713,
  409.         726,
  410.         737,
  411.         806,
  412.         817,
  413.         830,
  414.         832,
  415.         903,
  416.         915,
  417.         936,
  418.         940,
  419.         945,
  420.         956,
  421.         972,
  422.         979
  423.     ],
  424.     "Utah": [
  425.         385,
  426.         435,
  427.         801
  428.     ],
  429.     "Vermont": [
  430.         802
  431.     ],
  432.     "Virginia": [
  433.         276,
  434.         434,
  435.         540,
  436.         571,
  437.         686,
  438.         703,
  439.         757,
  440.         804,
  441.         826,
  442.         948
  443.     ],
  444.     "Washington": [
  445.         202,
  446.         206,
  447.         253,
  448.         360,
  449.         425,
  450.         509,
  451.         564,
  452.         771
  453.     ],
  454.     "West Virginia": [
  455.         304,
  456.         681
  457.     ],
  458.     "Wisconsin": [
  459.         262,
  460.         274,
  461.         353,
  462.         414,
  463.         534,
  464.         608,
  465.         715,
  466.         920
  467.     ],
  468.     "Wyoming": [
  469.         307
  470.     ]
  471. }
  472. const canadianStateToNumber = {
  473.     "Alberta": [
  474.         368,
  475.         403,
  476.         568,
  477.         587,
  478.         780,
  479.         825
  480.     ],
  481.     "British Columbia": [
  482.         236,
  483.         250,
  484.         257,
  485.         604,
  486.         672,
  487.         778
  488.     ],
  489.     "Manitoba": [
  490.         204,
  491.         431,
  492.         584
  493.     ],
  494.     "New Brunswick": [
  495.         428,
  496.         506
  497.     ],
  498.     "Newfoundland and Labrador": [
  499.         709,
  500.         879
  501.     ],
  502.     "Northwest Territories": [
  503.         867
  504.     ],
  505.     "Nova Scotia": [
  506.         782,
  507.         851,
  508.         902
  509.     ],
  510.     "Nunavut": [
  511.         867
  512.     ],
  513.     "Ontario": [
  514.         226,
  515.         249,
  516.         289,
  517.         343,
  518.         365,
  519.         382,
  520.         387,
  521.         416,
  522.         437,
  523.         460,
  524.         519,
  525.         537,
  526.         548,
  527.         613,
  528.         647,
  529.         683,
  530.         705,
  531.         742,
  532.         753,
  533.         807,
  534.         905,
  535.         942
  536.     ],
  537.     "Prince Edward Island": [
  538.         782,
  539.         902
  540.     ],
  541.     "Quebec": [
  542.         263,
  543.         354,
  544.         367,
  545.         418,
  546.         438,
  547.         450,
  548.         468,
  549.         514,
  550.         579,
  551.         581,
  552.         819,
  553.         873
  554.     ],
  555.     "Saskatchewan": [
  556.         306,
  557.         474,
  558.         639
  559.     ],
  560.     "Yukon": [
  561.         867
  562.     ]
  563. }
  564.  
  565. const stateToNumbers = {...usStateToNumbers, ...canadianStateToNumber};
  566.  
  567. const usStateZones = {
  568.     "Alabama": "America/Chicago",
  569.     "Alaska": "America/Anchorage",
  570.     "Arizona": "America/Phoenix",
  571.     "Arkansas": "America/Chicago",
  572.     "California": "America/Los_Angeles",
  573.     "Colorado": "America/Denver",
  574.     "Connecticut": "America/New_York",
  575.     "Delaware": "America/New_York",
  576.     "Florida": "America/New_York",
  577.     "Georgia": "America/New_York",
  578.     "Hawaii": "Pacific/Honolulu",
  579.     "Idaho": "America/Boise",
  580.     "Illinois": "America/Chicago",
  581.     "Indiana": "America/Indiana/Indianapolis",
  582.     "Iowa": "America/Chicago",
  583.     "Kansas": "America/Chicago",
  584.     "Kentucky": "America/New_York",
  585.     "Louisiana": "America/Chicago",
  586.     "Maine": "America/New_York",
  587.     "Maryland": "America/New_York",
  588.     "Massachusetts": "America/New_York",
  589.     "Michigan": "America/Detroit",
  590.     "Minnesota": "America/Chicago",
  591.     "Mississippi": "America/Chicago",
  592.     "Missouri": "America/Chicago",
  593.     "Montana": "America/Denver",
  594.     "Nebraska": "America/Chicago",
  595.     "Nevada": "America/Los_Angeles",
  596.     "New Hampshire": "America/New_York",
  597.     "New Jersey": "America/New_York",
  598.     "New Mexico": "America/Denver",
  599.     "New York": "America/New_York",
  600.     "North Carolina": "America/New_York",
  601.     "North Dakota": "America/Chicago",
  602.     "Ohio": "America/New_York",
  603.     "Oklahoma": "America/Chicago",
  604.     "Oregon": "America/Los_Angeles",
  605.     "Pennsylvania": "America/New_York",
  606.     "Rhode Island": "America/New_York",
  607.     "South Carolina": "America/New_York",
  608.     "South Dakota": "America/Chicago",
  609.     "Tennessee": "America/Chicago",
  610.     "Texas": "America/Chicago",
  611.     "Utah": "America/Denver",
  612.     "Vermont": "America/New_York",
  613.     "Virginia": "America/New_York",
  614.     "Washington": "America/Los_Angeles",
  615.     "West Virginia": "America/New_York",
  616.     "Wisconsin": "America/Chicago",
  617.     "Wyoming": "America/Denver"
  618. }
  619. const canadianStateZones = {
  620.     "Alberta": "America/Edmonton",
  621.     "British Columbia": "America/Vancouver",
  622.     "Manitoba": "America/Winnipeg",
  623.     "New Brunswick": "America/Moncton",
  624.     "Newfoundland and Labrador": "America/St_Johns",
  625.     "Nova Scotia": "America/Halifax",
  626.     "Ontario": "America/Toronto",
  627.     "Prince Edward Island": "America/Halifax",
  628.     "Quebec": "America/Toronto",
  629.     "Saskatchewan": "America/Regina",
  630.     "Northwest Territories": "America/Yellowknife",
  631.     "Nunavut": "America/Rankin_Inlet",
  632.     "Yukon": "America/Whitehorse"
  633.   }
  634.  
  635.  
  636. const stateZones = {...usStateZones, ...canadianStateZones}
  637.  
  638. const fix = (n: string) => {
  639.     let newNumber = n.replace(/[\s\(\)\+\-]/g, "");
  640.     if (!newNumber.startsWith("1")) {
  641.         newNumber = `1${newNumber}`;
  642.     }
  643.     return newNumber;
  644. }
  645.  
  646.  
  647. const getCode = (n: string) => n.slice(1, 4);
  648.  
  649. const getState = (n: string) => {
  650.     const code = Number(getCode(fix(n)));
  651.  
  652.     for (const [state, codes] of Object.entries(stateToNumbers)) {
  653.         if (codes.includes(code)) {
  654.             return state;
  655.         }
  656.     }
  657.     return undefined;
  658. }
  659.  
  660. const getTz = (n: string) => {
  661.     const state = getState(n);
  662.     return state && stateZones[state];
  663. }
  664. console.log(getTz(("1 (678) 361-6626")));
  665.  
  666. const numbers = [
  667.     '+1 978-236-7900', '+353868875315', '+33 6 09 37 43 43', '+506 8330 4579', '+972545468084',
  668.     '+1 603-686-1382', '+61422053150', '+1 407-399-1523', '+447796138049', '+19173993847',
  669.     '+61 423 348 833', '+14082639200', '+353861677300', '+61 404 712 139', '\'+1 707-239-0452',
  670.     '+17343475828', '+447772600167', '+5561998000220', '+17038989480', '+65 9236 7873',
  671.     '+1 626-347-6879', '+6596265887', '+1 831-566-7820', '+1 415-366-9672', '+61403562196',
  672.     '+1 908-720-5511', '+919008036795', '+12033002098', '+1 517-260-8798', '+6598188546',
  673.     '+6583032007', '+447971496830', '+447730369920', '+44 79 7970 9938', '+1 843-245-2563',
  674.     '+13103844311', '+1 801-554-2046', '+13475514412', '+1 203-443-6825', '+19496321011',
  675.     '+33 1 58 17 73 05', '+1 781-733-5016', '+1 916-945-7352', '+91 99670 07700', '+16103887553',
  676.     '+17325207613', '+17758003715', '+1 415-627-8795', '+1 407-492-7677', '+17272717746',
  677.     '+1 954-267-5983', '+18054059509', '+1 949-413-9298', '+14083864452', '+16126447915',
  678.     '+12023082186', '+18574983272', '+14252697966', '+12163264531', '+14088398855',
  679.     '+17022411085', '+19098445785', '+14086057554', '+15853620754', '+13017609884',
  680.     '+1 801-362-8898', '(602) 361-7565', '+17024602655', '(678) 361-6626', '+12063319465',
  681.     '+1 818-674-3351', '+16693002633', '+1 714-309-3500', '+17654135025', '+1 609-332-0709',
  682.     '+19164706645', '+1 781-291-9290', '+18566739212', '+1 978-430-6411', '+1 978-407-2669',
  683.     '+1 724-944-6314', '+1 908-385-0940', '+13012331415', '+16178408382', '+19104707587',
  684.     '+14086169518', '+13364806947', '+1 408-981-5497', '+16504306265', '+1 480-223-7272',
  685.     '+13522567790', '+1 248-882-2008', '+1 410-263-5740', '+1 347-831-3962', '+15164138562',
  686.     '+1 416-577-1267', '+1 607-661-9726', '+44 7798 632651', '+12019134437', '+19786211968',
  687.     '+1 610-256-8704', '+1 813-299-9995', '+18609185312', '+1 724-553-0969', '+1 781-277-1202',
  688.     '+1 415-216-7629', '+1 443-413-9080', '+19735566420', '+1 408-966-2662', '+12066017707',
  689.     '+44 20 3457 1067', '+447795613157', '+447873812890'
  690.   ]
  691.  
  692.   const res = numbers.map((x) => {
  693.     const tz = getTz(x);
  694.     return tz;
  695.   })
  696.  
  697.   console.log(res.filter(Boolean));
  698.  
Add Comment
Please, Sign In to add comment