正如标题所说,我想要当前的系统时间
我知道使用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());