2012-06-04 47 views
5

Tôi có một đầu vào ngày thời gian chuỗi:Hiển thị ngày ở miền địa phương hiện tại

2012-06-04 15:41:28

Tôi muốn hiển thị đúng nó cho các quốc gia khác nhau. Ví dụ: ở Châu Âu, chúng tôi có dd.MM.yyyy trong khi Hoa Kỳ sử dụng MM/dd/yyyy.

mã hiện tại của tôi là như thế này:

TextView timedate = (TextView) v.findViewById(R.id.report_date); 
SimpleDateFormat curFormater = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss"); 
curFormater.setTimeZone(TimeZone.getDefault()); 
Date dateObj = curFormater.parse(my_input_string); 
timedate.setText(dateObj.toLocaleString()); 

Nhưng nó không hoạt động chính xác như tôi muốn (tôi luôn nhận được sự "thống nhất" cho kết quả như "04 Tháng Sáu 2012 03:41:28" , ngay cả trên điện thoại của tôi). Tôi đang làm gì sai?

Trả lời

2

Hãy thử điều này:

TextView timedate = (TextView) v.findViewById(R.id.report_date); 
SimpleDateFormat curFormater = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss"); 
curFormater.setTimeZone(TimeZone.getDefault()); 
Date dateObj = curFormater.parse(my_input_string); 

int datestyle = DateFormat.SHORT; // try also MEDIUM, and FULL 
int timestyle = DateFormat.MEDIUM; 
DateFormat df = DateFormat.getDateTimeInstance(datestyle, timestyle, Locale.getDefault()); 

timedate.setText(df.format(dateObj)); // ex. Slovene: 23. okt. 2014 20:34:45 
0

Bạn có thử phiên bản này:

SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.US); 
    System.err.format("%30s %s\n", format, sdf.format(new Date(0))); 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 

Got nó từ tài liệu. Ý tôi là sử dụng phương thức format().

+0

này không hoạt động. Bạn lấy System.err ở đâu? Đó là Android. –

+0

Nó chỉ là một mẫu, nơi tôi chỉ cho bạn sử dụng các phương thức 'SimpleDateFormat'. Bạn cần sử dụng phương thức 'format()' để có được hành vi mong muốn. – teoREtik

+0

Tôi biết về hàm format(). Những gì tôi không biết là cách phát hiện ngôn ngữ hiện tại (ví dụ: Hoa Kỳ hoặc Châu Âu) để định dạng đúng ngôn ngữ. –

1

Cách đơn giản nhất để có được ngày hiện tại trong miền địa phương hiện tại (thiết bị locale!):

String currentDate = DateFormat.getDateInstance().format(Calendar.getInstance().getTime()); 

Nếu bạn muốn có ngày trong phong cách khác nhau sử dụng getDateInstance(int style) :

DateFormat.getDateInstance(DateFormat.FULL).format(Calendar.getInstance().getTime()); 

Kiểu khác: DateFormat.LONG, DateFormat.DATE_FIELD, DateFormat.DAY_OF_YEAR_FIELD, vv (sử dụng tổ hợp phím CTRL + Space để xem tất cả trong số họ)

Nếu bạn cần thời gian quá:

String currentDateTime = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.LONG).format(Calendar.getInstance().getTime()); 
Các vấn đề liên quan