timeCountDown.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /* by zhangxinxu 2010-07-27
  2. * http://www.zhangxinxu.com/
  3. * 倒计时的实现
  4. */
  5. var fnTimeCountDown = function(d, o){
  6. var f = {
  7. zero: function(n){
  8. var n = parseInt(n, 10);
  9. if(n > 0){
  10. if(n <= 9){
  11. n = "0" + n;
  12. }
  13. return String(n);
  14. }else{
  15. return "00";
  16. }
  17. },
  18. dv: function(){
  19. d = d || Date.UTC(2050, 0, 1); //如果未定义时间,则我们设定倒计时日期是2050年1月1日
  20. var future = new Date(d), now = new Date();
  21. //现在将来秒差值
  22. var dur = Math.round((future.getTime() - now.getTime()) / 1000) + future.getTimezoneOffset() * 60, pms = {
  23. sec: "00",
  24. mini: "00",
  25. hour: "00",
  26. day: "00",
  27. month: "00",
  28. year: "0"
  29. };
  30. if(dur > 0){
  31. pms.sec = f.zero(dur % 60);
  32. pms.mini = Math.floor((dur / 60)) > 0? f.zero(Math.floor((dur / 60)) % 60) : "00";
  33. pms.hour = Math.floor((dur / 3600)) > 0? f.zero(Math.floor((dur / 3600)) % 24) : "00";
  34. pms.day = Math.floor((dur / 86400)) > 0? f.zero(Math.floor((dur / 86400)) % 30) : "00";
  35. //月份,以实际平均每月秒数计算
  36. pms.month = Math.floor((dur / 2629744)) > 0? f.zero(Math.floor((dur / 2629744)) % 12) : "00";
  37. //年份,按按回归年365天5时48分46秒算
  38. pms.year = Math.floor((dur / 31556926)) > 0? Math.floor((dur / 31556926)) : "0";
  39. }
  40. return pms;
  41. },
  42. ui: function(){
  43. if(o.sec){
  44. o.sec.innerHTML = f.dv().sec;
  45. }
  46. if(o.mini){
  47. o.mini.innerHTML = f.dv().mini;
  48. }
  49. if(o.hour){
  50. o.hour.innerHTML = f.dv().hour;
  51. }
  52. if(o.day){
  53. o.day.innerHTML = f.dv().day;
  54. }
  55. if(o.month){
  56. o.month.innerHTML = f.dv().month;
  57. }
  58. if(o.year){
  59. o.year.innerHTML = f.dv().year;
  60. }
  61. setTimeout(f.ui, 1000);
  62. }
  63. };
  64. f.ui();
  65. };