我想使用javascript来验证各个国家/地区的日期格式。他们当然都有不同的方式来格式化他们的日期。
我想做什么(但不知道该怎么做)是创建一个月份对象数组。
每个月对象将包含一个数字(1月1日为2月等)和月份翻译的字符串数组(例如{'May' 'Maj' ,Mai'}
这样我每个月就会有12个对象。有人可以给我看如何制作这个对象数组。
我试过了
var monthObj = new Object(),
abrMon,
number;
var months[11] = new monthObj[11];
months[0].num = 1;
months[0].abrMon = { 'Jan', 'Other' };
但我不明白为什么这是错误的。
答案 0 :(得分:3)
你的代码有很多错误。首先,您通常不定义数组的长度:
var months[11] = new ...;
我说通常是因为您可以使用预定义的长度创建数组:
var months = new Array(12); // Please do *not* use
应该写成
var months = []; // array
new Object()
不再使用了,而是使用:
var a = {} // object
数组写为[ 1, 2, 3 ]
而不是{ 1, 2, 3 }
你可以将它们绑在一起:
var months = []; // array
months[0] = {}; // object
months[0].num = 1;
months[0].abrMon = ['Jan', 'Other'];
看起来你对二维数组很好:
var months = [
['Jan', 'Jen', 'Janu'],
['Feb', 'Fbr', 'Fyb'],
...
];
答案 1 :(得分:0)
首先,您可以从位置推导出月份数;你不需要存储它。 Javascript使用0 = 1月,1 = 2月等。因此,如果您需要为人类显示月份编号,只需在Javascript编号中添加1即可。
对于名称,您可以使用按月号索引的数组:
var abrMonthNames = [
['Jan', 'jan', 'janv'],
...
['May', 'maj', 'mai'],
...
['Dec', 'dec', 'déc' ]
];
然后只需在abrMonthNames[monthIndex]
中查找名称或从abrMonthNames[monthIndex][languageIndex]
中抓取该名称即可。
答案 2 :(得分:-1)
您的问题出在var months[11] = new monthObj[11];
我想您要做months[11] = new Object();
此外,您的{ 'Jan', 'Other' }
是无效对象 - 对象始终是键值对。将其更改为[ 'Jan', 'Other']
以获得此类结构。