2010-10-13 29 views
8

Xin chào Tôi đang tìm cách đặt múi giờ cho San Antonio, Texas.Có thể một số hãy cho tôi biết làm cách nào để tôi đặt cùng một mã Java của mình.Múi giờ java: San Antonio, Texas

Tôi muốn nó theo định dạng tương tự như Châu Mỹ/New York

Hiện nay tôi đang sử dụng mã này

TimeZone.getTimeZone("America/Denver"); 

Nhưng "Châu Mỹ/Denver" dường như không có múi giờ phù hợp với San Antonio, Texas

Trả lời

9

Đối với San Antonio, bạn nên sử dụng TimeZone.getTimeZone("US/Central")

Nếu bạn thực sự cần phải sử dụng "America/<City>" định dạng, gần nhất đến San Antonio chúng tôi thành phố là "America/Chicago".

Bạn có thể sử dụng điều này để có được một danh sách tất cả các ID cụ thể sẵn sàng cho Mỹ/Trung:

String[] values = TimeZone.getAvailableIDs(TimeZone.getTimeZone("US/Central").getRawOffset()); 

Và sau đó, hãy kiểm tra ở đây:

http://www.timeanddate.com/time/zones/

+0

Downvoter: tại sao? –

+0

khoảng thời gian php cho texas @Leo Holanda – lyndact

+0

FYI, 'java.util.TimeZone' là một trong những lớp ngày giờ cũ hiện được thừa kế, được thay thế bởi các lớp java.time. Lớp đó được thay thế bằng ['ZoneId'] (https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html) và [' ZoneOffset'] (https: // docs. oracle.com/javase/8/docs/api/java/time/ZoneOffset.html). –

0

tôi hoàn toàn googled câu hỏi của bạn và nhận điều này: http://www.few.vu.nl/~eliens/documents/java/jdk1.2-docs/docs/api/java/util/TimeZone.html

bạn cũng có thể có được một T imeZone sử dụng getTimeZone cùng với ID múi giờ. Ví dụ: ID múi giờ cho múi giờ chuẩn Thái Bình Dương là "PST". Vì vậy, bạn có thể nhận được một đối tượng TimeZone PST với: Sử dụng này:

TimeZone tz = TimeZone.getTimeZone("PST"); 
+1

Mặt khác, nếu bạn xem các tài liệu gần đây hơn, bạn sẽ thấy: * Lưu ý rằng hỗ trợ viết tắt chỉ dành cho khả năng tương thích JDK 1.1.x và nên sử dụng tên đầy đủ. * –

1

chủ đề liên quan: How to handle calendar TimeZones using Java?

múi giờ cho San Antonio:
Chuẩn múi giờ: UTC/GMT -6 giờ
Giờ mùa hè tiết kiệm: +1 giờ
Múi giờ hiện tại: UTC/GMT -5 giờ
viết tắt múi giờ: CDT - Giờ ban ngày miền trung

chỉnh sửa: liên kết này là tốt hơn liên quan đến định dạng Mỹ/New York: TimeZones in Java

2

San Antonio → America/Chicago

Mã định danh múi giờ IANA cho San Antonio là America/Chicago, dưới dạng shown on Time.is.

Sử dụng java.time

Cách hiện đại để xử lý ngày giờ là với các lớp java.time.

Lớp Instant đại diện cho một thời điểm trên dòng thời gian ở UTC với độ phân giải nanoseconds.

Instant instant = Instant.now(); // Current moment in UTC. 

Áp dụng ZoneId để nhận ZonedDateTime.

ZoneId z = ZoneId.of("America/Chicago"); 
ZonedDateTime zdt = instant.atZone(z); 

Tránh 3-4 chữ viết tắt khu thư

Chỉ định proper time zone name trong định dạng của continent/region như America/Montreal, Africa/Casablanca, hoặc Pacific/Auckland.

bao giờ sử dụng tên viết tắt 3-4 lá thư như EST hoặc IST hoặc vì họ là không khu đúng thời gian, không được chuẩn hóa, và thậm chí không duy nhất (!).

Tên múi giờ thường là thành phố. Việc đặt tên này không có nghĩa là chỉ là thành phố đó. Việc đặt tên như vậy chỉ đơn giản là một cách để gắn nhãn một khu vực mà người dân có lịch sử được chia sẻ của cùng một quy tắc múi giờ. Khu vực đó có thể khá lớn nếu toàn bộ vùng đất luôn được dân cư chia sẻ cùng một bộ quy tắc.


Về java.time

Khung java.time được xây dựng vào Java 8 và sau đó. Các lớp này thay thế các lớp học ngày giờ legacy phiền hà cũ như java.util.Date, Calendar, & SimpleDateFormat.

Dự án Joda-Time, hiện đang ở maintenance mode, khuyên di chuyển đến các lớp java.time.

Để tìm hiểu thêm, hãy xem Oracle Tutorial. Và tìm kiếm Stack Overflow cho nhiều ví dụ và giải thích. Đặc điểm kỹ thuật là JSR 310.

Nơi lấy các lớp java.time?

Dự án mở rộng ThreeTen-Extra java.time với các lớp bổ sung.Dự án này là một nền tảng chứng minh cho những bổ sung có thể có trong tương lai vào java.time. Bạn có thể tìm thấy một số lớp học hữu ích tại đây như Interval, YearWeek, YearQuartermore.