Tôi chỉ có chuỗi ngày và tôi muốn xem thời gian trong TimeZone khác theo chuỗi. Vì vậy, tôi đã làm điều đó như thế:Lấy thời gian của TimeZone khác theo chuỗi ngày, kết quả là sai
String dateStr = "2014-05-15 16:14:58 PM";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
sdf.setTimeZone(TimeZone.getTimeZone("America/Denver"));
Date date = sdf.parse(dateStr);
System.out.println(date);
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
System.out.println(sdf1.format(date));
Đây là TimeZone hiện trong máy tính của tôi:
Kết quả rằng mã ran là:
Fri May 16 06:14:58 CST 2014
2014-05-16 06:14:58 AM
Kết quả là sai, tôi đã có kết quả đúng bằng cách thay đổi TimeZone thành "America/Denver" trong máy tính của tôi và tôi thấy rằng:
America/Denver —— 2014-05-15 02:14:58 AM
Tôi không biết tại sao nó thích điều đó?
Nhưng nếu tôi đã có một ngày không phải là một chuỗi ngày, tôi làm điều đó:
public static String getFormatedDateString(String _timeZone) {
TimeZone timeZone = null;
if (StringUtils.isEmpty(_timeZone)) {
timeZone = TimeZone.getDefault();
} else {
timeZone = TimeZone.getTimeZone(_timeZone);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
sdf.setTimeZone(timeZone);
// TimeZone.setDefault(timeZone);
return sdf.format(new Date());
}
System.out.println ("Châu Mỹ/Denver -" + getFormatedDateString ("Châu Mỹ/Denver"));
Kết quả thích rằng:
------Asia/Shanghai------
2014-05-15 16:32:04 PM (current date)
America/Denver —— 2014-05-15 02:32:04 AM
Kết quả này là đúng.
Vì vậy, tôi đã nhầm lẫn, tôi không thể tìm thấy vấn đề khi tôi chỉ có một chuỗi ngày và tôi muốn biết thời gian của TimeZone khác. Có thể cơ thể nào giúp tôi được không?
Cảm ơn, PopoFibo –
@DigengTianhan bạn được hoan nghênh – PopoFibo