JavaScript 倒计时插件 Countdown.js


Countdown.js是一个轻量级的 JavaScript 类库,它提供了简单的 API,用于快速计算两个日期之间的差值,而且可以将结果以多种格式动态显示出来。


1. 安装使用

1.1 下载

Countdown.js官方网站为countdownjs.org,可以在其官网下载插件、查看文档等。或者通过下面链接下载:




2. API

Countdown.js提供了简单灵活的API。引用countdown.js文件后,就可以一个全局函数countdown()并传入一些静态常量进行设置:

var timespan = countdown(start|callback, end|callback, units, max, digits);

参数:

  • start|callback-开始时间,详见start/end参数
  • end|callback-结束始时间,详见start/end参数
  • units-设置时间单位常量,可选(默认countdown.DEFAULTS),详见units参数
  • max-设置单位的最大值的显示数量,可选(默认NaN),详见max参数
  • digits-设置最小单位小数允许的小数点,可选(默认0),详见digits参数

返回值:

units时间单位常量有以下值:

countdown.ALL =
    countdown.MILLENNIA |
    countdown.CENTURIES |
    countdown.DECADES |
    countdown.YEARS |
    countdown.MONTHS |
    countdown.WEEKS |
    countdown.DAYS |
    countdown.HOURS |
    countdown.MINUTES |
    countdown.SECONDS |
    countdown.MILLISECONDS;

countdown.DEFAULTS =
    countdown.YEARS |
    countdown.MONTHS |
    countdown.DAYS |
    countdown.HOURS |
    countdown.MINUTES |
    countdown.SECONDS;

这个方法允许我们仅传一个时间参数,表示自/到那个时间的时差:

countdown( new Date(2000, 0, 1) ).toString();

这将返回一个人类可读的时间描述,类似如下:

11 years, 8 months, 4 days, 10 hours, 12 minutes and 43 seconds


start/end参数

start/end参数可以是以下值之一:

  1. null会使用当前时间
  2. JavaScriptDate对象
  3. number-'UNIX'时间戳
  4. 接收一个TimeSpan参数的回调函数

startend参数同时指定时,countdown(…)总是返回相同的结果。如果只指定一个,而另一个为null,当为过去时间时那么会重复调用计算计数,当为未来时间时将计算剩余的时间。


units参数

units参数支持标准的位运算。如,使用OR操作符提定“月和日”:

countdown.MONTHS | countdown.DAYS

指定“非周或非毫秒”

~(countdown.WEEKS | countdown.MILLISECONDS)


max参数

可选参数code>max用于指定最大单位标签的显示数量。如,指定为2时,则只显示前两级:

countdown(start, end, units, 2).toString() => "5 years and 2 months"


digits参数

可选参数digits用于设置最小单位的小数点位数。如,指定为2位:

countdown(start, end, units, max, 2).toString() => "5 years and 1.65 months"


返回结果Timespan

Timespan是一个包含以下字段的对象:

  • 开始时间-用于计算的开始日期对象
  • 结束时间-用于计算的结束日期对象
  • units-指定的单位值
  • value-相差的毫秒数(end-start

Timespan对象有两个用于格式化输出的方法:

  • toString(emptyLabel)-格式化输出Timespan对象
    ts.toString() => "5 years, 1 month, 19 days, 12 hours and 17 minutes"
  • toHTML(tagName, emptyLabel)-格式化输出Timespan对象,并使用指定的tagName标签包装输出单位。不指定时将使用span标签:
    ts.toHTML() => "<span>5 years</span>, <span>1 month</span>, <span>19 days</span>, <span>12 hours</span> and <span>17 minutes</span>"
    
    ts.toHTML("em") => "<em>5 years</em>, <em>1 month</em>, <em>19 days</em>, <em>12 hours</em> and <em>17 minutes</em>"