熟悉JavaScript的同志们应该知道这一点,那就是Date类的getMonth方法的返回值比实际月份少一。为什么会是这样呢?我认为这是出于风俗习惯和实用的考虑。
我猜测,在英文环境中,关于月份的表达用数字的机会远少于文本。不像中文环境中的我们,表达月份只要用“数字+ 月” 就可以了,如2月。而英文却是要把2月读做February,而February与数字2在文本形式上没有一点关联(本段待考证啊)。
那么如何快速表达这些文本呢,当然是数据驱动的思想啦,用数组即可。那么如何快速访问数组的元素呢,当然是索引啦,于是乎getMonth的返回值作为月份数组的返回值就理所应当了。
代码实例
输出当前的英文的月份及其缩写
var mon = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var monAbbr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var now = new Date();
document.write(mon[now.getMonth()] + "<br/>");
document.write(monAbbr[now.getMonth()] + "<br/>");
输出结果为:
March
Mar
扩展
Date的getDay方法的返回值是0-6的,与getMonth保持了完美的一致,不过0-6对应着星期日-星期六,这就是风俗习惯问题了。
关于用文字多还是用数字多,对于年月日中的日的表达,英文语言环境中更习惯用数字。Date的getDate方法的返回值是1-31暗示了这一点。