我正在使用slice()
拆分字符串,但它无法正常工作。
的字符串:
var datept = "2018-01-19"
var timept = "12:05"
不相交:
var month = datept.slice(5, -3); // should: "01" is: "01"
var day = datept.slice(8, -0); // should: "19" is: "" -- WRONG
var year = datept.slice(0, -6); // should: "2018" is: "2018"
var hours = timept.slice(0, -3); // should: "12" is: "12"
var minutes = timept.slice(3, -0); // should: "05" is: "" -- WRONG
也尝试过:
var day = datept.slice(-8, -0); // or
var day = datept.slice(8, -0); // or
var day = datept.slice(-8, 0); // or
var day = datept.slice(8, 0);
答案 0 :(得分:4)
您可以拆分日期并使用destructuring assignment作为值。
var datept = "2018-01-19",
timept = "12:05",
[year, month, day] = datept.split('-'),
[hours, minutes] = timept.split(':');
console.log(year, month, day);
console.log(hours, minutes);

答案 1 :(得分:2)
不要使用-0
。我甚至不确定这是什么意思:) -0
只是0
,而slice
会因endIndex
低于startIndex
而感到困惑var day = datept.slice(8, -0); // should: "19" is: "" -- WRONG
。
下面:
var day = datept.slice(8); // should: "19" is: "19"
相反:
Date
无论如何,有更好的方法可以做到这一点。您可以操纵split()
对象(尽管这些不完全直观),或使用> var parts = "2018-01-19".split("-")
> parts[0] // '2018'
> parts[1] // '01'
> parts[2] // '19'
来获取片段:
> const [ year, month, day ] = "2018-01-19".split("-")
> year // '2018'
> month // '01'
> day // '19'
使用现代javascript,您甚至可以:
<form
#myForm="ngForm"
novalidate>
<input
#myCtrl
required
type="input"
name="myCtrl"
id="myCtrl"
[(ngModel)]="value">
</form>
答案 2 :(得分:1)
为什么不使用string.split()?
let str = "2018-01-19";
let parts = str.split("-");
let day = parts[2];
let month = parts[1];
let year = parts[0];
答案 3 :(得分:0)