2011-07-22 47 views
35

Tôi có một ứng dụng Android mà tôi cần phải chuyển đổi ngày hiện tại thành số giây đã trôi qua từ năm 1970.cách lấy số giây được chuyển từ năm 1970 cho một giá trị ngày tháng?

Điều tôi đang làm hiện tại là vậy.

Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT")); 
cal.set(currentDate.get(Calendar.YEAR), month, currentDate.get(Calendar.DAY_OF_MONTH), 0, 0, 0); 
long timesince1970 = cal.getTime().getTime(); 

Một vấn đề khác là ứng dụng của tôi cần chạy ở Đức. Do đó cần phải chuyển đổi thời gian thành múi giờ và sau đó chuyển đổi thành số giây kể từ năm 1970.

Ở trên không cho tôi kết quả chính xác.

Trả lời

93

System.currentTimeMillis() cung cấp cho bạn số mili giây từ kỷ nguyên Unix (ngày 1 tháng 1 năm 1970 00:00:00 UTC).

Chia nhỏ 1.000 để nhận số giây.

+0

Vì nó xuất phát từ 'System' do' currentTimeMillis() 'thay đổi nếu người dùng đã thay đổi ngày? –

+2

@CliffBurton: Vâng, đúng vậy. Điện thoại Android thường được thiết lập để tự động đồng bộ hóa thời gian của chúng, nhưng ngày trả lại có thể sai. Nếu bạn cần thời gian để chính xác, bạn thường sẽ cần phải thực hiện một số loại kiểm tra trực tuyến. (N.B .: như thời gian trả về là UTC, nó không bị ảnh hưởng bởi DST hoặc múi giờ, trừ khi có sai sót) –

3
//long currentTimeMillis()-Returns the current time in milliseconds. 
long millis = System.currentTimeMillis(); 

//Divide millis by 1000 to get the number of seconds. 
long seconds = millis/1000; 
+1

Bạn nên giải thích tại sao mã của bạn trả lời câu hỏi. – Markus

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