# US 10,503,124 B2 · Automatic time zone detection in devices

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,503,124 B2
- Document ID: US10503124B2
- Status: Granted
- Kind: B2
- Application number: 14/937,637
- Filed: 2015-11-10
- Published: 2017-05-04
- Granted: 2019-12-10
- Earliest claimed: 2015-10-31
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Ronald S. Ruzicka; Ken M. Sadahiro; Axel Andrejs; Matthew D. Johnson; Gregory R. Slayden; Wen Li Looi
- Web page: https://patentgrep.com/patent/US10503124B2

## CPC

- G04G 9/0076: {in which the time in another time-zone or in another city can be displayed at will}
- G04R 20/00: Setting the time according to the time information carried or implied by the radio signal
- H04W 4/021: Services related to particular areas, e.g. point of interest [POI] services, venue services or geofences
- G04G: ELECTRONIC TIME-PIECES
- G04R: RADIO-CONTROLLED TIME-PIECES
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

Methods, systems, apparatuses, and computer program products are provided for enabling devices to determine the time zone in which they are located. A mobile device may receive location information from one or more sources. Based thereon, the current location of the mobile device may be determined in terms of latitude and longitude. The indication of the current location may be converted to an index value according to a Hilbert curve (or other space-filling curve), and the index value applied to a time zone index file to determine the local time zone. A time zone setting of the mobile device may be updated accordingly. Furthermore, “geofencing” may be used by the mobile device to detect movement towards and through a time zone boundary, leading to a new time zone determination being initiated.

## Claims

### Claim 1

A method in a computer, comprising:
receiving map data defining a world map as an array of polygons with associated time zones;
determining a time zone identifier array based on the map data that includes a time zone identifier for each time zone identified in the map data;
for each time zone, analyzing each polygon of the array of polygons included in the time zone to generate a set of cells associated with the time zone, thereby generating a plurality of sets of cells associated with the time zones;
eliminating duplicate cell entries in the plurality of sets of cells associated with the time zones; and
generating a time zone index file that includes the plurality of sets of cells with corresponding time zone identifiers.

### Claim 2 (depends on 1)

The method of claim 1, wherein said determining a time zone identifier array comprises:
determining the time zone identifier array to include time zone identifiers according to a first time zone data type; and
mapping the time zone identifiers from a first time zone data type to a second time zone data type.

### Claim 3 (depends on 1)

The method of claim 1, wherein, for each time zone, said analyzing each polygon of the array of polygons included in the time zone to generate a set of cells associated with the time zone comprises:
for each polygon,
generating a rectangular envelope that surrounds the polygon and includes a grid of rectangular cells, a size of the cells based on an order value,
discarding any cell of the grid that fails to intersect the polygon to generate a set of un-discarded cells, and
generating a cell identifier for each cell in the set of un-discarded cells based on a space-filling curve, thereby generating a set of cell identifiers for the polygon;
the sets of cell identifiers generated for the polygons of the array of polygons of the time zone forming the set of cells associated with the time zone.

### Claim 4 (depends on 3)

The method of claim 3, wherein said generating a cell identifier for each cell in the set of un-discarded cells based on a space-filling curve comprises:
generating a cell identifier for each cell in the set of un-discarded cells based on a Hilbert curve.

### Claim 5 (depends on 3)

The method of claim 3, further comprising:
for each time zone, converting a format of the set of cells associated with the time zone to a set of ranges of cell identifiers.

### Claim 6 (depends on 4)

The method of claim 4, wherein said eliminating duplicate cell entries in the plurality of sets of cells associated with the time zones comprises:
combining the sets of ranges of cell identifiers associated with all time zones into a superset of ranges of cell identifiers for all time zones;
sorting the superset of ranges of cell identifiers;
for each cell having a cell identifier appearing in multiple ranges associated with time zones in the superset,
determining a plurality of areas in the cell for time zones associated with a corresponding plurality of ranges of the superset that includes the cell identifier,
determining which time zone has the largest of the areas in the cell, and
deleting the cell identifier from the plurality of ranges in the superset other than the range associated with time zone determined to have the largest area in the cell.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
providing the generated time zone index file to at least one computing device to use for time zone determination.

### Claim 8

A computing device, comprising:
a location data source that provides location information that indicates a location of the computing device;
at least one processor circuit; and
at least one memory that stores program code configured to be executed by the at least one processor circuit, the program code comprising:
a time zone identifier determiner configured to receive map data defining a world map as an array of polygons with associated time zones, and to determine a time zone identifier array based on the map data that includes a time zone identifier for each time zone identified in the map data;
a polygon analyzer configured to, for each time zone, analyze each polygon of the array of polygons included in the time zone to generate a set of cells associated with the time zone, thereby generating a plurality of sets of cells associated with the time zones;
a duplicate remover configured to eliminate duplicate cell entries in the plurality of sets of cells associated with the time zones; and
a file encoder configured to generate a time zone index file that includes the plurality of sets of cells with corresponding time zone identifiers.

### Claim 9 (depends on 8)

The computing device of claim 8, wherein the time zone identifier determiner is further configured to:
determine the time zone identifier array to include time zone identifiers according to a first time zone data type; and
map the time zone identifiers from a first time zone data type to a second time zone data type.

### Claim 10 (depends on 8)

The computing device of claim 8, wherein the polygon analyzer is further configured to:
for each polygon,
generate a rectangular envelope that surrounds the polygon and includes a grid of rectangular cells, a size of the cells based on an order value,
discard any cell of the grid that fails to intersect the polygon to generate a set of un-discarded cells, and
generate a cell identifier for each cell in the set of un-discarded cells based on a space-filling curve, thereby generating a set of cell identifiers for the polygon, the sets of cell identifiers generated for the polygons of the array of polygons of the time zone forming the set of cells associated with the time zone.

### Claim 11 (depends on 10)

The computing device of claim 10, wherein the polygon analyzer is further configured to generate a cell identifier for each cell in the set of un-discarded cells based on a space-filling curve by generating a cell identifier for each cell in the set of un-discarded cells based on a Hilbert curve.

### Claim 12 (depends on 10)

The computing device of claim 10, wherein the polygon analyzer is further configured to, for each time zone, convert a format of the set of cells associated with the time zone to a set of ranges of cell identifiers.

### Claim 13 (depends on 11)

The computing device of claim 11, wherein, to eliminate duplicate cell entries, the duplicate remover is configured to:
combine the sets of ranges of cell identifiers associated with all time zones into a superset of ranges of cell identifiers for all time zones;
sort the superset of ranges of cell identifiers;
for each cell having a cell identifier appearing in multiple ranges associated with time zones in the superset,
determine a plurality of areas in the cell for time zones associated with a corresponding plurality of ranges of the superset that includes the cell identifier,
determine which time zone has the largest of the areas in the cell, and
delete the cell identifier from the plurality of ranges in the superset other than the range associated with time zone determined to have the largest area in the cell.

### Claim 14

A computer-readable memory device having program code recorded thereon that when executed by at least one processor of a computing device causes the at least one processor to perform operations, the operations comprising:
receiving map data defining a world map as an array of polygons with associated time zones;
determining a time zone identifier array based on the map data that includes a time zone identifier for each time zone identified in the map data;
for each time zone, analyzing each polygon of the array of polygons included in the time zone to generate a set of cells associated with the time zone, thereby generating a plurality of sets of cells associated with the time zones;
eliminating duplicate cell entries in the plurality of sets of cells associated with the time zones; and
generating a time zone index file that includes the plurality of sets of cells with corresponding time zone identifiers.

### Claim 15 (depends on 14)

The computer-readable memory device of claim 14, wherein the operation of determining a time zone identifier array comprises:
determining the time zone identifier array to include time zone identifiers according to a first time zone data type; and
mapping the time zone identifiers from a first time zone data type to a second time zone data type.

### Claim 16 (depends on 14)

The computer-readable memory device of claim 14, wherein the operation of, for each time zone, analyzing each polygon of the array of polygons included in the time zone to generate a set of cells associated with the time zone comprises:
for each polygon,
generating a rectangular envelope that surrounds the polygon and includes a grid of rectangular cells, a size of the cells based on an order value,
discarding any cell of the grid that fails to intersect the polygon to generate a set of un-discarded cells, and
generating a cell identifier for each cell in the set of un-discarded cells based on a space-filling curve, thereby generating a set of cell identifiers for the polygon;
the sets of cell identifiers generated for the polygons of the array of polygons of the time zone forming the set of cells associated with the time zone.

### Claim 17 (depends on 16)

The computer-readable memory device of claim 16 wherein the operation of generating a cell identifier for each cell in the set of un-discarded cells based on a space-filling curve comprises:
generating a cell identifier for each cell in the set of un-discarded cells based on a Hilbert curve.

### Claim 18 (depends on 16)

The computer-readable memory device of claim 16 wherein the operations further comprise:
for each time zone, converting a format of the set of cells associated with the time zone to a set of ranges of cell identifiers.

### Claim 19 (depends on 17)

The computer-readable memory device of claim 17, wherein the operation of eliminating duplicate cell entries in the plurality of sets of cells associated with the time zones comprises:
combining the sets of ranges of cell identifiers associated with all time zones into a superset of ranges of cell identifiers for all time zones;
sorting the superset of ranges of cell identifiers;
for each cell having a cell identifier appearing in multiple ranges associated with time zones in the superset,
determining a plurality of areas in the cell for time zones associated with a corresponding plurality of ranges of the superset that includes the cell identifier,
determining which time zone has the largest of the areas in the cell, and
deleting the cell identifier from the plurality of ranges in the superset other than the range associated with time zone determined to have the largest area in the cell.

### Claim 20 (depends on 14)

The computer-readable memory device of claim 14, wherein the operations further comprise:
providing the generated time zone index file to at least one computing device to use for time zone determination.
