2013-02-15 24 views
7

Máy chủ của tôi ở Hoa Kỳ và tôi đang truy cập vào ứng dụng ở Ấn Độ qua trình duyệt web, trong trường hợp đó, TimeZone.getDefault() sẽ trở lại là gì? Nếu nó trả về Múi giờ dựa trên Ấn Độ trên cơ sở những gì nó sẽ trở lại?cách TimeZone.getDefault() hoạt động?

Tôi đã thay đổi trong cài đặt bảng điều khiển thành ngôn ngữ khác và múi giờ khác nhau của hệ thống mặc dù nó không thay đổi dựa trên trên cài đặt của tôi.

Tôi đã viết mã như Fallows ...

def dateFormat = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.DEFAULT,Locale.getDefault()) 
dateFormat.setTimeZone(TimeZone.getDefault()) 
+0

Bạn có ý gì khi "truy cập ứng dụng"? Cuộc gọi đến 'TimeZone.getDefault()' đang chạy ở đâu? Và bạn đã quan sát điều gì trong thử nghiệm của mình? Tại thời điểm này câu hỏi của bạn quá mơ hồ để đưa ra câu trả lời hay. –

Trả lời

6

Nó sẽ trả về múi giờ của JVM TimeZone.getDefault() được thực thi. Vì vậy, nếu ứng dụng đang chạy trên một máy chủ ở Ấn Độ, nó sẽ giống như "Asia/Calcutta".

0

Đây là một vấn đề 'nơi mã này thực hiện'. Nếu bạn đang nói về một ứng dụng web đang được trình duyệt ở Ấn Độ truy cập, loại ngày bạn nhận được sẽ ở Hoa Kỳ. Vâng, trừ khi bạn đặt ngôn ngữ và múi giờ thích hợp cho phiên của người dùng. Trong các khung như Vaadin khi bạn gọi setLocale() trên ứng dụng, nó cũng đặt múi giờ, nhưng trong các nền tảng khác, bạn có thể phải sử dụng rõ ràng trình định dạng ngày với múi giờ cụ thể.

+0

'Locale' thường không bao gồm múi giờ. –

+0

Tôi nghĩ rằng bạn đã đúng, tôi đã có một trường hợp rất cụ thể trong tâm trí! – n0rm1e

1

Múi giờ mặc định thường được đặt cho máy chủ lưu trữ, không phải cho người dùng hoặc ứng dụng. Trong trường hợp của bạn, nó sẽ là múi giờ mặc định cho một máy chủ nơi ứng dụng của bạn đang chạy, hầu hết có thể là múi giờ của Hoa Kỳ.

Cố gắng chạy lệnh date +%Z trong bảng điều khiển Unix trên máy chủ.

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