2013-05-27 68 views
7

Định dạng mặc định của java.util.date giống như thế này "Thứ Hai 27 tháng 5 11:46:15 IST 2013". Làm thế nào tôi có thể chuyển đổi điều này thành dấu thời gian và tính bằng giây tính khác nhau giữa cùng thời gian và thời gian hiện tại?Chuyển đổi định dạng mặc định java.util.date thành Dấu thời gian trong Java

java.util.Date date= new java.util.Date(); 
Timestamp ts_now = new Timestamp(date.getTime()); 

Mã trên cung cấp cho tôi dấu thời gian hiện tại. Tuy nhiên, tôi đã không có đầu mối làm thế nào để tìm dấu thời gian của chuỗi trên.

+0

thể trùng lặp của [Java chuỗi để chuyển đổi ngày] (http://stackoverflow.com/questions/4216745/java-string-to-date-conversion) –

+0

Tôi sợ không , Tôi đã làm việc trên định dạng dấu thời gian. – swateek

+0

Nhân bản: [Java: Chuyển đổi chuỗi thành TimeStamp] (http://stackoverflow.com/q/18915075/642706) –

Trả lời

10

Bạn có thể sử dụng lớp Calendar để chuyển đổi Date

public long getDifference() 
{ 
    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy"); 
    Date d = sdf.parse("Mon May 27 11:46:15 IST 2013"); 

    Calendar c = Calendar.getInstance(); 
    c.setTime(d); 
    long time = c.getTimeInMillis(); 
    long curr = System.currentTimeMillis(); 
    long diff = curr - time; //Time difference in milliseconds 
    return diff/1000; 
} 
+0

Trong khi đang cố gắng chuyển đổi chuỗi "Ngày 27 tháng 5 11:46:15 IST 2013" cho đến nay. Nó mang lại cho tôi một ngoại lệ chuỗi không thể bỏ qua. Bất kỳ ý tưởng làm thế nào tôi có thể đi về? – swateek

+0

@Swat: Đã cập nhật câu trả lời. –

+0

cảm ơn rất nhiều @Rahul. Tôi thực sự kết hợp câu trả lời của bạn với câu trả lời của Salem ở trên để có được quyền này. Cảm ơn! :) – swateek

0

Bạn có thể sử dụng

long startTime = date.getTime() * 1000000;; 
    long estimatedTime = System.nanoTime() - startTime; 

Để có được thời gian trong nano.

Java Docs

+0

Làm cách nào để chuyển đổi chuỗi tôi đã chuyển? – swateek

+0

@Swat kiểm tra mã của tôi :) – nidhin

+0

Tôi muốn chuyển đổi "Ngày 27 tháng 5 11:46:15 IST 2013" chuỗi này thành dấu thời gian. Và tìm ra sự khác biệt giữa nó và thời điểm hiện tại .. điều đó cũng diễn ra trong vài giây. – swateek

0

Bạn có thể sử dụng để phân tích DateFormat ngày (java.text *.):

DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy", Locale.ENGLISH); 
Date d = df.parse("Mon May 27 11:46:15 IST 2013") 

Bạn sẽ phải thay đổi miền địa phương để phù hợp với của riêng bạn (với điều này bạn sẽ nhận được 10:46:15). Sau đó, bạn có thể sử dụng cùng một mã mà bạn phải chuyển đổi nó thành dấu thời gian.

+0

Cảm ơn bạn! Tôi đã sử dụng câu trả lời của bạn cùng với @Rahul để có được quyền này. – swateek

8

nhất một

String str_date=month+"-"+day+"-"+yr; 
DateFormat formatter = new SimpleDateFormat("MM-dd-yyyy"); 
Date date = (Date)formatter.parse(str_date); 
long output=date.getTime()/1000L; 
String str=Long.toString(output); 
long timestamp = Long.parseLong(str) * 1000; 
Các vấn đề liên quan