2013-04-10 45 views
6

Làm cách nào để lấy thời gian từ chuỗi ngày bằng JavaScript.Lấy thời gian từ một chuỗi ngày

datestring của tôi là theo cách sau: 2013-04-08T10: 28: 43Z

Làm thế nào để phân chia các thời gian trong giờ và phút định dạng. Tôi muốn hiển thị dòng hoạt động theo cách sau:

xxx đã cập nhật 2 giờ trước
yyy đã cập nhật 3min trước

+2

Bạn có thể có cái nhìn lúc này Darshan

+0

http://www.w3schools.com/js/js_obj_date.asp - hướng dẫn http://www.w3schools.com/jsref/jsref_obj_date.asp - Tham chiếu đối tượng ngày JavaScript – Viliam

+0

bản sao có thể có của [javascript Date ISO8601] (http://stackoverflow.com/questions/6228302/javascript-date-iso8601) –

Trả lời

1

Simple Javascript là quá đủ: Date.parse sẽ chuyển đổi chuỗi của bạn để timestamp:

var date_string = '2013-04-08T10:28:43Z'; 

var your_date_object = new Date(); 
your_date_object.setTime(Date.parse(date_string)); 

var min = your_date_object.getUTCMinutes(); 
var hour = your_date_object.getUTCHours(); 
+0

nhưng ngày ở định dạng chuỗi ISO – vishnu

10

Chỉ cần tạo ngày đối tượng mới:

var myDate = new Date("2013-04-08T10:28:43Z"); 

var minutes = myDate.getMinutes(); 
var hours = myDate.getHours(); 
+2

Tại sao điều này bị giảm giá? JavaScript hỗ trợ định dạng ISO 8601 ra khỏi hộp. –

+0

@Jack THANK YOU! Cuối cùng ai đó cũng hợp lý. – Stasel

+0

Vâng, điều này là chính xác. cũng var seconds = myDate.getSeconds(); – pollaris

1

Trích xuất một ngày từ ngày tháng của bạn gọi

trích Đầu tiên các con số với

var sp = dateString.match(/\d+/g) 

Sau đó, bạn có thể xây dựng một đối tượng Date hoặc bỏ qua bước này

var dateObject = new Date(+sp[0], +sp[1]-1, +sp[2], +sp[3], +sp[4], +sp[5]) 

Và gọi getHoursgetMinutes trên đối tượng ngày này.

Nếu bạn bỏ qua điều này thì trực tiếp nhận được +sp[3] cho giờ và +sp[4] trong vài phút.


Tính chênh lệch

Vì bạn dường như phải so sánh với bây giờ, bạn sẽ nhận được thời gian khác nhau theo cách này:

var timeDifference = new Date(new Date - dateObject); 

Và sau đó gọi getHoursgetMinutes trên timeDifference.

-1
var curr_date = new Date(); 
var test_date = new Date("2016-01-08 10:55:43"); 

hours_diff=Math.abs(test_date.getHours()-curr_date.getHours()); 
minutes_diff=Math.abs(test_date.getHours()*60+test_date.getMinutes()-curr_date.getHours()*60-curr_date.getMinutes()); 
console.log("xxx has updated "+hours_diff+" hours ago"); 
console.log("xxx has updated "+minutes_diff+" minutes ago"); //not so beautiful 

///STILL IF THE date is a string and !!NOT CREATED with DATE 
/// "Get the time from a date string" might have this solution 

var date = "2016-01-08 10:55:43"; 
var hours = date.slice(-8); 

console.log("hours and minutes string is "+hours); 

fiddle test

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