2013-08-25 61 views
5

Tôi đang sử dụng plugin jQuery để đặt đồng hồ đếm ngược trong trang web của mình. Hiện nay các mã điều khiển những gì hiển thị timer là:đếm ngược Javascript cho thời gian và ngày cụ thể

<script type="text/javascript"> 
    var clock = $('.clock').FlipClock(3600 * 24 * 3, { 
     clockFace: 'DailyCounter', 
     countdown: true 
    }); 
</script> 


Các JS cho plugin có thể được xem tại đây: https://github.com/objectivehtml/FlipClock/blob/master/js/flipclock/flipclock.js

Trang ví dụ về mã trong sử dụng có thể được nhìn thấy ở đây: http://flipclockjs.com/faces/daily-counter

Hiện tại bộ đếm thời gian là bộ đếm ngược trong 3 ngày sẽ đặt lại mọi lúc trang được làm mới. Tôi muốn sử dụng một thời gian tùy chỉnh cho đồng hồ đếm ngược sẽ được tuyệt đối (wont thiết lập lại với làm mới trang). Tôi muốn ngày 30 tháng 9 năm 2013 vào lúc 12:00 pm PST (US West - Giờ Vùng California).

Có cách nào để thực hiện việc này bằng Javascript hoặc jQuery không?

+0

bạn có quyền viết mã php? –

+0

nope .. javascript chỉ –

Trả lời

15

Lấy thời gian hiện tại, và lưu ý rằng đây sẽ là thời điểm ấn định trên đồng hồ người dùng máy tính, bất cứ điều gì mà được thiết lập để, và thiết lập một ngày nào đó, sau đó tính toán sự khác biệt và sử dụng cho các plugin:

var date = new Date(Date.UTC(2013, 8, 30, 12, 0, 0)); 
var now = new Date(); 
var diff = date.getTime()/1000 - now.getTime()/1000; 

var clock = $('.clock').FlipClock(diff, { 
    clockFace: 'DailyCounter', 
    countdown: true 
}); 

Đối với thời gian chính xác, tôi sẽ liên tục sử dụng máy chủ web của bạn để xuất hiện thời gian hiện tại.

+0

Và typeError loại gì? – adeneo

+0

Tôi có lẽ nên lưu ý rằng plugin bạn đang liên kết được gọi là *** FlipClock *** chứ không phải *** FlipClip ***? – adeneo

+0

có nó là flipclock không flipclip, nhưng tiếc là doesnt làm việc hoặc như được thấy trên http: //www.domainandseo.com/26/index.html .... phiên bản bình thường là http://www.domainandseo.com/ 26/index1.html –

8

tôi muốn làm điều đó theo cách đó:

<script type="text/javascript"> 
    var clock = $('.clock').FlipClock(new Date(2013,8,30).getTime()/1000 - new Date().getTime()/1000, { 
     clockFace: 'DailyCounter', 
     countdown: true 
    }); 
</script> 

này đếm ngược đến ngày Tháng Chín, 30 2013 ... Tôi không thử nó nhưng vì vậy tôi không chắc chắn nó làm việc.

Sửa: Sửa ngày là ngày mới (2013,8,30) thay vì ngày mới (2013,9,30) là đếm tháng bắt đầu từ 0 không 1.

+0

điều này là tốt, nhưng điều này thực sự nói" 64 ngày còn lại "nhưng cho đến ngày 30 tháng 9 có shuould còn khoảng '35 ngày nữa '. Vì vậy, tôi nghĩ rằng một cái gì đó nên sai? –

+0

Vâng, bạn nói đúng. Nó sẽ là ngày mới (2013,8,30). Đặt tháng bạn muốn - 1 khi đếm tháng bắt đầu từ 0 không 1. Có thể vì nó tính sự khác biệt từ một ngày nhất định trong đó tháng là tháng vì vậy nếu bạn muốn đại diện cho tháng 1, bạn phải sử dụng 0. Để đại diện cho tháng 9, bạn phải sử dụng 8. Tôi đã chỉnh sửa câu trả lời thành câu trả lời chính xác ngay bây giờ. –

+0

oh yeah, cảm ơn rất nhiều. Tôi đã trả lời ur một cộng một, nhưng câu trả lời khác có câu trả lời được lựa chọn cuz nó cũng đặt múi giờ mặc định để UTC theo yêu cầu trong câu hỏi. Cảm ơn một lần nữa :) –

0

Tôi asssuming sự arg đầu tiên của .FlipClip() là khoảng thời gian cho đến khi đếm ngược hoàn tất. Lần này, "t", phải là sự khác biệt giữa giờ và thời gian mục tiêu.

var t = targetTimeInMs - currentTimeInMs; 

Để nhận thời gian hiện tại, hãy sử dụng hàm tạo ngày tháng không có ngày.

var currentTimeInMs = new Date().getTime(); 

Để nhận thời gian mục tiêu, hãy cung cấp Ngày có đối số. Dưới đây là một vài ví dụ từ MDN:

var today = new Date(); 
var birthday = new Date("December 17, 1995 03:24:00"); 
var birthday = new Date(1995,11,17); 
var birthday = new Date(1995,11,17,3,24,0); 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

Tôi không chắc chắn chính xác nếu bạn cần phải cung cấp mili giây như arg đầu tiên chức năng .FlipClip() của bạn. Tham khảo tài liệu/nguồn cho điều đó. Sau đó, sử dụng phương thức thích hợp của đối tượng Date để lấy đơn vị yêu cầu (giây? Phút? Giờ? Và sử dụng date.getSeconds(), getHours(), v.v., xem MDN.)

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