2010-06-14 02: 21: 49 + 0400 hoặc 2010-06-14 02: 21: 49-0400Nhận múi giờ địa phương của thiết bị
là có cách để chuyển đổi chuỗi này thành ngày theo múi giờ máy cục bộ với định dạng 2010/06/14 02:21
2010-06-14 02: 21: 49 + 0400 hoặc 2010-06-14 02: 21: 49-0400Nhận múi giờ địa phương của thiết bị
là có cách để chuyển đổi chuỗi này thành ngày theo múi giờ máy cục bộ với định dạng 2010/06/14 02:21
Thêm vào những gì @ org.life.java và @Erica nói, đây là những gì bạn nên do
String dateStr = "2010-06-14 02:21:49-0400";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
TimeZone tz = TimeZone.getDefault();
sdf.setTimeZone(tz);
Date date = sdf.parse(dateStr);
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
String newDateStr = sdf.format(date);
System.out.println(newDateStr);
Sau đó, newDateStr
sẽ là chuỗi định dạng ngày mới của bạn.
CẬP NHẬT @xydev, ví dụ tôi đưa cho bạn hoạt động, xem mã nguồn đầy đủ dưới đây:
/**
*
*/
package testcases;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
/**
* @author The Elite Gentleman
*
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
String dateStr = "2010-06-14 02:21:49-0400";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
TimeZone tz = TimeZone.getDefault();
sdf.setTimeZone(tz);
Date date = sdf.parse(dateStr);
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
String newDateStr = sdf.format(date);
System.out.println(newDateStr);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Output: 2010-06-14 08:21:49 AM
Tôi nhận được giá trị này cho "Ngày tháng" Thứ Hai 14 tháng 6 11:51:49 GMT + 00: 00 2010 .... và lỗi ứng dụng khi đạt đến bước " Chuỗi newDateStr = sdf.định dạng (ngày); " – xydev
@xydev ... mỏ hoạt động như một nét duyên dáng ... xem mã đầy đủ của tôi .... –
cảm ơn .. tôi hiểu rồi ... lỗi được gây ra bởi mã này \t \t \t // String dateStr =" 2010 -06-14 02: 21: 49-0400 "; // \t \t \t SimpleDateFormat sdf = SimpleDateFormat mới (" yyyy-mM-dd HH: mm: SSZ "); // \t \t \t TimeZone tz = TimeZone. getDefault(); // \t \t \t sdf.setTimeZone (tz); // \t \t \t date = "2010/06/14 02: 21: 49-0400"; // // \t \t \t thử { // \t \t \t \t ngày = sdf.parse (ngày); // \t \t \t} catch (ParseException e) {// \t \t \t \t // TODO Auto-tạo ra khối catch // \t \t \t \t e.printStackTrace(); // \t \t \t} – xydev
Sử dụng SimpleDateFormat
String string1 = "2010-06-14 02:21:49-0400";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ")
sdf.setTimeZone(tz);
Date date = sdf.parse(string1);
Lưu ý: tôi không chắc chắn cùng lớp có sẵn trong Andriod.
Bạn có thể thực hiện tất cả các loại định dạng ưa thích và bản địa hóa các ngày bằng cách sử dụng lớp DateFormat. Có tài liệu hoàn chỉnh, rất tốt ở đầu trang API tại đây: http://download.oracle.com/javase/1.4.2/docs/api/java/text/DateFormat.html
Trường hợp thông thường nhất có thể được xử lý bằng đối tượng SimpleDateFormat. chi tiết của nó đang ở đây: http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html
Các SimpleDateFormat mô hình chuỗi xuất cho ví dụ bạn có ở trên sẽ là:
yyyy-MM-dd hh:mm a
'a' là AM/PM, nó không lấy Múi giờ. –
@ The-Elite-Gentlemen, vâng, đó là định dạng của chuỗi đầu ra xydev yêu cầu; "2010-06-14 02:21 AM". :) – Erica
Hãy cẩn thận rằng nếu bạn đang chạy trên giả lập múi giờ của bạn luôn là GMT. Tôi chỉ mất 2 giờ để cố gắng hiểu tại sao ứng dụng của tôi không cho tôi thời điểm thích hợp (máy tính của tôi hiển thị) cho đến khi tôi nhận ra đó là do trình mô phỏng.
Để kiểm tra bạn đang chạy trên việc sử dụng giả lập
if (Build.PRODUCT.contains("sdk")){
// your code here for example if curtime has the emulator time
// since midnight in milliseconds then
curtime += 2 * 60 * 60 * 1000; // to add 2 hours from GMT
}
thể trùng lặp của [ngày hiển thị theo múi giờ của thiết bị] (http://stackoverflow.com/questions/4312220/display-date- theo vùng thời gian-của-thiết bị) –
Tôi vừa mới trả lời câu hỏi này gần đây. –