我从一本书中得到了这段代码,我不明白这句话“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]”如何转换为月份名称字符串,当月份是数组时。这只是一些数组功能的构建吗?
答案 0 :(得分:2)
mm
是语句mm=months[mm]
开头的数字,因此它返回mm
数组中months
值的字符串。在JavaScript中,变量不是严格类型的,因此它会将此字符串插入变量mm
答案 1 :(得分:0)
mm
是一个0-11之间的数字,表示从中检索它的日期对象的特定月份。 months
是一个包含所有月份名称的数组。如果您说mm = months[mm]
,则表示mm
等于mm
数组中months
位置的字符串。这令人困惑,因为他们使用相同的变量名称。做这样的事情可能更好:
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; 1月将是0和12月11日。
答案 2 :(得分:0)
days
是一个数组。给定索引dy=0
,days[dy]
返回"sun"
,这是数组中的第0个值。同样,给定索引dy=1
,days[dy]
返回"mon"
,这是数组中的第一个值。等等。
months
的相同概念。
但正确的答案应该是“在Javascript或jQuery中使用一些内置函数”。有关详细信息,请参阅此post。从长远来看,滚动你自己的日期时间转换功能几乎肯定会回来并咬你。
答案 3 :(得分: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是7月。
没有它不转换,而是使用基于索引的数组中的值。
答案 4 :(得分:0)
mm=month[mm]
获取mm
数组中索引now.getMonth()
(由months
返回)的值,并将其放入mm
变量中。对于dy=days[dy]
来说,这同样适用。
我认识到代码编写得很糟糕。 mm2=month[mm]
之后使用mm2
(而不是“新”mm
)应改为编写。