0

我从一本书中得到了这段代码,但我不明白这个语句“mm=months[mm]”如何转换为月份名称字符串:

function init(){
    var panel = document.getElementById("panel");

    var days=["sun","mon","tue","wed","thur","fri","sat"];
    var months=["jan","feb","mar","apr","may","jun",
    "jul","aug","sep","oct","nov","dec"];

    var now = new Date();

    var yy = now.getFullYear();
    var mm = now.getMonth();
    var dd = now.getDate();
    var dy = now.getDay();

    mm=months[mm];  //convert to month name string
    dy=days[dy];  //convert to month name string

    var str = dy+","+mm","+dd+","+yy;
    panel.innerHTML+="us date string: "+str;
    str = dy+","+dd+" "+mm+","+yy;
    panel.innerHTML+="<br>uk date string: "+str;
}
window.onload=init();

mm=months[mm]我的问题是和dy=days[dy](转换为月份或日期名称字符串)究竟是做什么的。当月份是一个数组时,我不明白这个语句“mm=months[mm]”如何转换为月份名称字符串。这只是数组的一些内置功能吗?

4

5 回答 5

2

mm是语句开头的数字mm=months[mm],因此它返回数组中的mm第 th 个值,months它是一个字符串。在 JavaScript 中,变量不是严格类型的,因此它会将这个字符串插入到变量中mm

于 2012-07-07T20:57:24.070 回答
0

mm是一个从 0 到 11 的数字,表示您从中检索它的日期对象所特有的月份。months是一个包含所有月份名称的数组。如果你说mm = months[mm],你是说等于数组mm中位置的字符串mmmonths这很令人困惑,因为它们使用相同的变量名。这样做可能会更好:

var mm = now.getMonth();
alert(mm); // will alert 6
var monthName = months[mm]; // will alert July, which is position 7 in the months array

原因mm是 6 是因为月份由于某种原因是 0 索引的,这意味着它们从 0 开始到 11;一月为 0,十二月 11 日。

于 2012-07-07T20:58:40.807 回答
0

days是一个数组。给定 index dy=0days[dy]返回"sun",这是数组中的第 0 个值。同样,给定 index dy=1days[dy]返回"mon",这是数组中的第一个值。等等。

相同的概念months

但正确的答案应该是“在 Javascript 或 jQuery 中使用一些内置函数”。有关更多详细信息,请参阅此帖子。从长远来看,滚动你自己的日期时间转换函数几乎肯定会回来咬你。

于 2012-07-07T20:59:36.200 回答
0

假设日期是 08,月份是 7 月。

var yy = now.getFullYear();   
var mm = now.getMonth();    // month is 7 now
var dd = now.getDate();     // dd is 8 now
var dy = now.getDay();

现在,

mm=months[mm];

方法,

mm = months[7];

// in months array, at seventh index we have july,

所以mm是七月。

不,它不转换,而是使用基于索引的数组中的值。

于 2012-07-07T21:02:04.353 回答
0

mm=month[mm]取数组中索引处的值mm(由 返回now.getMonth()months并将其放入mm变量中。那个 id 也是一样的dy=days[dy]

我承认代码写得不好。mm2=month[mm]并且使用mm2after (而不是 "new" mm)应该被写出来。

于 2012-07-07T21:05:27.170 回答