将伪日期字符串转换为javascript日期对象

时间:2016-07-22 11:42:15

标签: javascript

我从服务器收到以下时间:

"2010-11-30T23:00:00.000Z"

此时间在三个单独的输入字段中输出:

<input name="day" type="number" value={new Date(myTimeString).getDay()} />
<input name="month" type="number" value={new Date(myTimeString).getMonth()} />
<input name="year" type="number" value={new Date(myTimeString).getYear()} />

这导致三个输入彼此相邻显示,其中包含一些值:1 - 12 - 2010

现在,当用户更改某个值时,可以说月份从12更改为10我想获取从服务器获取的原始时间字符串,并相应地将其更改为变化

是否有适当的&#34;这样做的方法? 我能想到的只是存储原始时间,然后使用str.replace方法在特定索引处覆盖它。

在这种情况下,期望的结果是:"2010-10-30T23:00:00.000Z"

1 个答案:

答案 0 :(得分:1)

在日期方面,你通常不应该进行手动字符串操作。

首先,您需要将incomming字符串转换为Date对象。

var date = new Date('2010-11-30T23:00:00.000Z');

然后使用相应的Date.prototype.set*方法绑定相应字段的更改事件。例如setDate

document
    .querySelector('input[name=day]')
    .addEventListener('change', function setDay() {
       var day = parseInt(this.value, 10);
       date.setDate(day);
    })

然后在需要时使用toISOString方法将日期转换为字符串。

var dateStr = date.toISOString()