我有不同类型的日期格式,如:你将如何处理不同格式的日期?
8月27日至28日663 CE
1945年8月22日5月19日
1945年5月4日 - 1945年8月22日
5/4/1945
2-7-1232
1020年3月4日
1/3/1
(year 1)
09/08/0
(year 0)
注意他们都是不同的格式,不同的顺序,一些有2个月,一些只有一个,我试图用moment js没有结果,我也尝试使用date js,但没有运气。
我试图做一些分裂:
dates.push({
Time : []
});
function doSelect(text) {
return $wikiDOM.find(".infobox th").filter(function() {
return $(this).text() === text;
});
}
dateText = doSelect("Date").siblings('td').text().split(/\s+/g);
for(var i = 0; i < dateText.length; i++) {
d += dateText[i] + ' ';
}
dates[0].Time.push(d);
但结果是:
"Time": [
"27 - 28 August 663 CE ",
最终什么,我需要自动生成是:
<ul class="Days">
<li>27</li>
<li>28</li>
</ul>
<ul class="Months">
<li>August</li>
</ul>
<ul class="Year">
<li>663</li>
</ul>
而且还认为一种方法来处理CE
或AD
或BC
为了实现这个目标,我想用一个理想的方式是一个多维数组:
time.push({
Day : [],
Month : [],
Year : [],
Prefix : []
});
大概检查max 2 numbers for days
,查个月对像January, February, March..
字符串列表,然后在今年分钟3 numbers to max 4 numbers
然后处理prefix with some conditionals
。但是,year 2 or 1
怎么样?或者如果日期是02/9/1975
?或者分开dash
,他们会是一种新的格式。我认为这里的逻辑有点不同,但考虑到它们都是不同的格式,如何将这些日期分成多维数组?
这是一个字符串解析问题,该日期库赢得除了可能验证最终字符串并且不是一个小问题之外,可能不会有帮助 – charlietfl
@charlietfl是的,事实上他们没有帮助。我想分割字符串,最后再检查更新的问题,并附加一些额外的想法。 –
可能需要为您从数据中获取的已知格式(以及每个数据的解析器)构建大量的正则表达式,并且当您遇到不匹配的新存储的正则表达式时,您可以为其编写一个新的正则表达式 – charlietfl