基本上我有8位数的简单无格式日期输出,如下所示:
<div class="date">20170822</div>
寻找一个简单的js / jquery脚本来插入&#34; /&#34;在第4和第6位数之后:
<div class="date">2017/08/22</div>
谢谢,任何帮助表示感谢:)
答案 0 :(得分:2)
您可以使用正则表达式
"20170822".replace(/^([0-9]{4})([0-9]{2})([0-9]{2})/, "$1/$2/$3");
var els = document.querySelectorAll(".date");
els.forEach(function(el){
var d = el.innerHTML;
el.innerHTML= d.replace(/^([0-9]{4})([0-9]{2})([0-9]{2})/, "$1/$2/$3");
});
&#13;
<div class="date">20170822</div>
<div class="date">20170102</div>
<div class="date">20170408</div>
<div class="date">20170310</div>
&#13;
答案 1 :(得分:0)
您可以使用简单的j来执行此操作
$(document).ready(function(){
$(".date").each(function(i,elem) {
var divdate = $(this).html();
var lenght = divdate.length;
var newdate = '';
for(var i = 0;i<lenght;i++){
if(i==3){
newdate += divdate[i] +'/';
}
else
if(i==5){
newdate += divdate[i] +'/';
}
else{
newdate += divdate[i];
}
}
$(this).html(newdate);});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<div class="date">20170822</div>
<div class="date">20191229</div>
<div class="date">20161025</div>
<div class="date">20150620</div>
&#13;
答案 2 :(得分:-1)
需要将/
个字符插入到字符集中。 JavaScript数组有一个 .splice()
方法来做这种事情,但字符串不是真正的数组,它们是“类似数组”的对象。但是,它们可以很容易地转换为真正的数组。
来自 MDN :
类似数组的对象
也可以调用
slice
方法来转换类似于Array的对象/ 集合到一个新的数组。您只需将方法绑定到对象。 函数内部的参数是“类似数组”的示例 对象
完成后, Array.splice() 方法将解决问题。
var divs = document.querySelectorAll(".date"); // Get all the divs into a node-list (array-like object)
// Convert the node list to an array (so Array.forEach can be used) and loop over the array
[].slice.call(divs).forEach(function(d){
var sAry = [].slice.call(d.textContent); // Convert the text content of the div to an array
// Insert the / at the index positions
sAry.splice(4,0,"/");
sAry.splice(7, 0, "/");
d.textContent = sAry.join(""); // Update the div with the formatted value
});
<div class="date">20170822</div>
<div class="date">20170822</div>
<div class="date">20170822</div>
<div class="date">20170822</div>
<div class="date">20170822</div>
<div class="date">20170822</div>