首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在不使用后端服务的情况下动态获取当前系统时间?

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

Stack Overflow用户
提问于 2022-02-20 09:50:44
回答 2查看 59关注 0票数 0

正如标题所说,我想要当前的系统时间。

我知道,使用Date()可以给我当前的时间,但这不一定是系统时间,所以它没有帮助。

我知道我可以使用http请求从某些后端服务获取系统时间,但问题是我希望动态更新系统时间(如果系统时间更改-我希望我的网页更改时间,即使我不刷新页面)。

因此,如果有一种方法来实现这一点,只使用角度-它将更容易。

是否可以这样做呢?

示例:

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

代码语言:javascript
复制
sudo date -s "1 FEB 2022 03:12:20"           

所以现在我希望我的网页能显示同样的日期和时间--2022年2月1日03:12:20。

EN

回答 2

Stack Overflow用户

发布于 2022-02-20 11:21:52

您可以使用rxjs操作符和map。

代码语言:javascript
复制
date$=timer(0,1000).pipe(map(_=>new Date()))
{{date$|async}}

但这只会告诉你客户的日期。如果需要服务器中的日期,则需要调用服务器进行更正。

这样你就可以有一些

代码语言:javascript
复制
  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))
  }))
票数 1
EN

Stack Overflow用户

发布于 2022-02-20 11:06:33

没有对其进行测试,但是new Date()应该总是给您系统时间,这意味着您可以每秒钟获得一次new Date()。

这大致翻译为:

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

因此,解决办法是:

代码语言:javascript
复制
document.setInterval(() => console.info(new Date()), 1000);

或者更愤怒(使用rxjs而不是香草)

代码语言:javascript
复制
timer(1000).subscribe(() => console.info(new Date());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71193193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档