2010-06-14 39 views
11

Tôi đang tìm thư viện Java xử lý chuyển đổi đến/từ GPS Time.Thư viện đại diện thời gian GPS

Thời gian GPS có kỷ nguyên 6 tháng 1 năm 1980 và không có giây nhảy vọt, vì vậy nó khác với các biểu diễn thời gian chuẩn hơn. Dưới đây là mô tả có liên quan từ wikipedia:

Trong khi hầu hết đồng hồ được đồng bộ hóa với Giờ quốc tế phối hợp (UTC), đồng hồ nguyên tử trên vệ tinh được đặt thành thời gian GPS. Sự khác biệt là thời gian GPS không được sửa chữa để phù hợp với vòng quay của Trái đất, do đó nó không chứa giây nhuận hoặc các chỉnh sửa khác được định kỳ thêm vào UTC. Thời gian GPS được thiết lập để phù hợp với Giờ quốc tế phối hợp (UTC) vào năm 1980, nhưng kể từ đó đã phân kỳ. Việc thiếu hiệu chỉnh có nghĩa là thời gian GPS vẫn ở mức không đổi với Thời gian nguyên tử quốc tế (TAI) (TAI - GPS = 19 giây). Việc hiệu chỉnh định kỳ được thực hiện trên các đồng hồ trên bo mạch để hiệu chỉnh các hiệu ứng tương đối và giữ chúng đồng bộ với các đồng hồ mặt đất.

Thông báo điều hướng GPS bao gồm sự khác biệt giữa thời gian GPS và UTC, tính đến năm 2009 là 15 giây do giây nhảy thêm vào UTC ngày 31 tháng 12 năm 2008. Người nhận trừ chênh lệch này từ thời gian GPS để tính UTC và múi giờ cụ thể giá trị. Các đơn vị GPS mới có thể không hiển thị đúng thời gian UTC cho đến khi nhận được thông báo bù UTC. Trường bù trừ GPS-UTC có thể chứa 255 giây nhảy vọt (8 bit), với tốc độ thay đổi hiện tại của vòng quay Trái đất (với một giây nhảy vọt được giới thiệu khoảng 18 tháng), nên đủ để kéo dài cho đến khoảng năm 2300.

Ngược lại với định dạng năm, tháng và ngày của lịch Gregorian, ngày GPS được biểu thị dưới dạng số tuần và số giây thành tuần. Số tuần được truyền dưới dạng trường mười bit trong các thông báo điều hướng C/A và P (Y), và vì vậy nó sẽ trở thành 0 lần sau mỗi 1.024 tuần (19,6 năm). GPS tuần không bắt đầu lúc 00:00:00 UTC (00:00:19 TAI) vào ngày 6 tháng 1 năm 1980 và số tuần trở thành 0 lần đầu tiên vào lúc 23:59:47 UTC vào ngày 21 tháng 8 năm 1999 (00 : 00: 19 TAI vào ngày 22 tháng 8 năm 1999). Để xác định ngày Gregorian hiện tại, một máy thu GPS phải được cung cấp với ngày gần đúng (trong vòng 3,584 ngày) để dịch chính xác tín hiệu ngày GPS. Để giải quyết vấn đề này, thông báo định vị GPS hiện đại sử dụng trường 13 bit, chỉ lặp lại 8,192 tuần (157 năm), do đó kéo dài đến năm 2137 (157 năm sau tuần GPS).

Tôi không muốn tự cuộn; Tôi không thấy bất cứ điều gì trong thời gian Joda chỉ ra nó có thể xử lý ngày mã hóa GPS .. là có một cách để mở rộng nó?

Trả lời

2

Trang web này dường như đang thực hiện chuyển đổi nhanh chóng trong javascript. link text

+0

Cảm ơn, tôi đã sử dụng trang web này để xây dựng mã thư viện Java của riêng tôi thực hiện chuyển đổi. – I82Much

+0

@ I82Much Bạn có thể giải thích về ý nghĩa của bạn * sử dụng * trang web đó không? – Pacerier

+0

Tôi đã xem mã nguồn để xem ông ta đang làm gì và chuyển đổi nó sang Java – I82Much

0

Bạn có thể giải thích về những gì bạn đang cố gắng làm không?

Nếu bạn đang đọc dữ liệu từ GPSr, luồng NMEA phải được sửa cho độ lệch UTC theo báo giá của bạn và được xác nhận bởi this.

+0

Trang web này dường như đang thực hiện chuyển đổi nhanh chóng trong javascript. http://leapsecond.com/java/gpsclock.htm – GinoA

+0

Gửi đó là phản hồi và tôi sẽ đánh dấu nó là đã được chấp nhận. – I82Much

3

JSR-310 có các lớp TAIInstantUTCInstant sẽ giúp giải quyết vấn đề này (vì quy mô thời gian GPS là biến thể của TAI). Chúng nằm trong dự án ThreeTen-Extra.

Các vấn đề liên quan