2012-06-17 36 views
11

Tôi đang cố sử dụng vạch cao để hiển thị một số dữ liệu trong 24 giờ qua. Biểu đồ yêu cầu thời gian bắt đầu khi bạn sử dụng thời gian cho trục x như trong ví dụ này Highcharts time example. Tôi không thể hiểu làm thế nào để nói với nó để bắt đầu 24 giờ trước ví dụ, nếu bây giờ là 22:34 vào ngày 18, tôi muốn nó bắt đầu lúc 22:34 vào ngày 17. Tôi không phải là rất tốt với thời gian và ngày liên quan đến mã và Javascript cũng không phải là điểm mạnh của tôi. Tôi tin rằng tôi sẽ cần kết quả đã hoàn thành như sau: pointStart: Date.UTC(2012, 5, 17, 22, 34) Ví dụ trên, nhưng tôi không chắc chắn làm thế nào để có được điều đó từ Date().Thời gian tương đối Javascript 24 giờ trước, v.v. theo thời gian

Trả lời

20

Bạn nên sử dụng timestamps như bạn có thể tính toán với họ.

Đây là cách bạn nhận được dấu thời gian hiện tại: Math.round(new Date().getTime()/1000) Xin lưu ý rằng đây là giờ địa phương của máy tính.

Bây giờ bạn có thể lấy dấu thời gian 24 giờ trước như thế này:

var ts = Math.round(new Date().getTime()/1000); 
var tsYesterday = ts - (24 * 3600); 

Xin xem fiddle này: http://jsfiddle.net/Mjm7V/

Edit: Như Nick một cách chính xác chỉ ra, Date#getTime trả về UTC timestamp (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime)

+0

Cảm ơn, tôi không biết tôi có thể sử dụng dấu thời gian. – Totoro

+0

"Xin lưu ý rằng đây là giờ địa phương của máy tính". tuyên bố từ chối trách nhiệm trong câu trả lời là không chính xác .. Ngày # getTime là dấu thời gian UTC https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime – Nick

2

Chỉ cần trừ đi lượng mili giây trong vòng 24 giờ kể từ ngày:

new Date (Date.UTC(2012, 5, 17, 22, 34) - 24 * 3600 * 1000) 
+0

Tại sao các downvotes, whats sai với giải pháp này? – priestc

+0

Giải pháp này không hiển thị 24 giờ so với thời gian tương đối/hiện tại, nhưng từ một thời gian cụ thể, được mã hóa cứng .. và câu hỏi đã được thực hiện cách đây 24 giờ kể từ bây giờ. – Nick

26

Điều này thực sự khá đơn giản:

var yesterday = new Date(new Date().getTime() - (24 * 60 * 60 * 1000)); 

Chỉ cần tạo Date mới với giá trị của dấu thời gian hiện tại trừ 24 giờ.

(24 giờ nhân với 60 phút trong mỗi giờ nhân với 60 giây trong mỗi phút nhân với 1000 mili giây trong mỗi giây)

1

24 giờ trước:

new Date(Date.now() - 86400 * 1000).toISOString()

  1. bây giờ: new Date().toISOString()
  2. kết quả đầu ra: '2017-02-04T09:15:25.233Z'
  3. Date.now() trả về giây kể từ thời đại.
  4. Subtract 86400 giây trong một lần ngày 1000 chuyển đổi sang mili giây
  5. kết quả đầu ra: '2017-02-03T09:14:11.789Z'
Các vấn đề liên quan