我有一个日期时间字符串作为返回
"2018-02-22下午3:42:49;
我知道我可以使用拆分("(方法进行拆分,但它给了我3个单独的
2018-02-22下午3:42:49
但我需要它2018-02-22,下午3:42:49
我可能只需要加入最后2个,但那可能是肮脏的
这里有一种方法:
//your date string
var dt = "2018-02-22 3:42:49 PM";
//slice date by index
var d = dt.slice(0,10);
//slice time by index
var t = dt.slice(11,21);
//check if hour is double digits by checking length of dt string
if (dt.length > 21) {
t = dt.slice(11,22)
}
//add date and time with space inbetween
var dplust = d + ' ' + t;
//get p ids for example
var justDate = document.getElementById("justDate");
var justTime = document.getElementById("justTime");
var dplustDiv = document.getElementById("dplust");
//set inner html of p for examples
justDate.innerHTML = 'This is just date - ' + d;
justTime.innerHTML = 'This is just time - ' + t;
dplustDiv.innerHTML = 'This is date plus time - ' + dplust;
console.log(d);
console.log(t);
<p id="justDate"></p>
<p id="justTime"></p>
<p id="dplust"></p>
您可以将String.protype.match((与regex和String.protype.slice((一起使用,然后您只得到2个
let dateString = "2018-02-22 3:42:49 PM";
let dateParts = dateString.match(/^(S+)s(.*)/).slice(1); // slice(1) removes the first match as that is the full string which is not needed
console.log('1: ', dateParts[0] + ', ' + dateParts[1]);
// or because it's only two parts you can also use join
console.log('2: ', dateParts.join(', '));
console.log('Array length: ' + dateParts.length, dateParts);
在这种情况下,之所以使用.match()
而不是.split()
,是因为使用.match()
可以使用后备。显然,javascript中的.split()
不支持这一点。
我希望这能帮助你,因为考虑一下它,而不是做一个数组,
也许你只需要用索引来识别空间,然后从字符串中获取你想要的内容:
var DT = "2018-02-22 3:42:49 PM";
var SplitDateTime = DT.indexOf(" ");
var eDate = DT.substring(0, SplitDateTime); // 2018-02-22
var eTime = DT.substring(SplitDateTime + 1); // 3:42:49 PM
祝你过得愉快!
那个?
function transfDate(sDate)
{
let [yyyy,mm,dd,h,m,s,t] = sDate.match(/d{1,4}|AM|PM/g)
return [`${yyyy}-${mm}-${dd}`, `${h}:${m}:${s} ${t}`]
}
console.log( transfDate( '2018-02-22 3:42:49 PM') )
// return -> [ "2018-02-22", "3:42:49 PM" ]