是否可以在不使用后端服务的情况下在Angular上动态获取当前系统时间



正如标题所说,我想要当前的系统时间
我知道使用Date()可以给我当前时间,但这不一定是系统时间,所以没有帮助。

我知道我可以使用http请求从一些后端服务获取系统时间,但问题是我希望系统时间动态更新(如果系统时间发生变化,我希望我的网页即使不刷新页面也会更改时间(
因此,如果有一种方法只使用角度来实现这一点,那就容易多了。

有可能这样做吗?

示例:
我使用的是Linux机器,现在我将当前日期设置为2022年2月1日03:12:20,如下所示:

sudo date -s "1 FEB 2022 03:12:20"           

所以现在我希望我的网页显示相同的日期和时间-2022年2月1日03:12.20

您可以使用rxjs运算符来映射

date$=timer(0,1000).pipe(map(_=>new Date()))
{{date$|async}}

但这只会给你客户的日期。如果你想在服务器上显示日期,你需要打电话给服务器来更正

所以你可以有一些像

incr:number=0;
date$=timer(0,1000).pipe(
switchMap((i:number)=>{
if (i%10==0)  //you can indicate here when you want "check"
//the date in server,e.g. each 10 seconds
{
return this.service.getDate().pipe(tap(x=>{
this.incr=x.getTime()-new Date().getTime()}))
}
return of(new Date(new Date().getTime()+this.incr))
}))

没有测试它,但new Date()应该总是给你系统时间,这意味着你可以每秒得到new Date()

大致翻译为:

如果没有给定参数,构造函数将创建一个具有当前系统时区的日期和时间的日期对象

因此解决方案是:

document.setInterval(() => console.info(new Date()), 1000);

或者可能角度更大(使用rxjs而不是香草(

timer(1000).subscribe(() => console.info(new Date());

最新更新