如何从自定义日期时间 运行 计时器?
How to run timer from custom datetime?
需要 运行 自定义日期时间(过去或未来)的计时器。 Ex: Jun 15 2021 15:45:31 GMT+0530", "Tue Jun 15 2021 15:45:32 GMT+0530"
(秒)
startTimer() {
const dateTime = new Date('2021-06-15T15:45:30');
setInterval(() => {
this.now = dateTime;
this.startTimer();
}, 1000);
}
//定时器不工作,它是静态的。 (Tue Jun 15 2021 15:45:31 GMT+0530
)
组件:
{{ now }}
您需要更改 this.now
...
的实际值
let now = new Date('2021-06-15T15:45:30');
function startTimer() {
setInterval(() => {
now = new Date(now.getTime() + 1000);
console.log(now)
}, 1000);
}
startTimer();
以上是一个简单的 vanillaJS 版本。由于您标记了 momentjs
,您可能还想看看 add。
或者,由于您使用的是 angular,因此您可以使用一些不错的选项来使用 rxjs 来处理计时器 - 例如 interval or timer.
问题是您在使用 setInterval()
启动计时器之前设置了 dateTime
然后在 1 秒后,时间再次设置为同一日期。
你也不应该从 setInterval()
.
内部调用 this.startTimer();
试试这个:
const now = new Date('2021-06-15T15:45:30');
startTimer() {
setInterval(() => {
this.now.setSeconds(this.now.getSeconds() + 1)
}, 1000);
}
需要 运行 自定义日期时间(过去或未来)的计时器。 Ex: Jun 15 2021 15:45:31 GMT+0530", "Tue Jun 15 2021 15:45:32 GMT+0530"
(秒)
startTimer() {
const dateTime = new Date('2021-06-15T15:45:30');
setInterval(() => {
this.now = dateTime;
this.startTimer();
}, 1000);
}
//定时器不工作,它是静态的。 (Tue Jun 15 2021 15:45:31 GMT+0530
)
组件:
{{ now }}
您需要更改 this.now
...
let now = new Date('2021-06-15T15:45:30');
function startTimer() {
setInterval(() => {
now = new Date(now.getTime() + 1000);
console.log(now)
}, 1000);
}
startTimer();
以上是一个简单的 vanillaJS 版本。由于您标记了 momentjs
,您可能还想看看 add。
或者,由于您使用的是 angular,因此您可以使用一些不错的选项来使用 rxjs 来处理计时器 - 例如 interval or timer.
问题是您在使用 setInterval()
启动计时器之前设置了 dateTime
然后在 1 秒后,时间再次设置为同一日期。
你也不应该从 setInterval()
.
this.startTimer();
试试这个:
const now = new Date('2021-06-15T15:45:30');
startTimer() {
setInterval(() => {
this.now.setSeconds(this.now.getSeconds() + 1)
}, 1000);
}