MomentJS/Date对象默认UTC

2023-11-23

我在我的 Angular 项目中使用 MomentJS,并且在不同的日期时区方面遇到了很多问题。

我的应用程序不应该考虑任何时区,但是我的后端 api 和前端之间存在这种混乱,当我将标准时刻对象发送到 c# 后端时,它默认将其转换为 UTC,并且我总是得到日期 -1 天。

我可以将 MomentJS 或 javascript Date 对象设置为始终默认为 UTC 并忽略小时/分钟/秒吗?

当我做:moment()它会根据时区和当前时间填充今天的值。

我要实现moment()在我的整个应用程序中始终具有 UTC 值并且时间始终为 00:00:00。

是否也可以通过以下方式实现这一目标new Date() ?

现在我一直在使用.toUTCString() after new Date()但我的解决方案中有大量日期变量,并且确保所有内容都有.toUTCString()一直以来,如果另一个开发人员错过了这一点,就会导致问题。我正在尝试找到一种在项目级别标准化的方法。

我的主要问题是 momentJS 比较方法.isBefore(), .isSame(), .isAfter()。因为我的所有日​​期都包含不同的小时和不同的时区,所以当比较发生时,它会将它们考虑在内,而不是按照我想要的方式运行。


您可以使用时刻时区 with moment.

然后设置默认即可UTC时区,代码如下:

import * as moment from 'moment-timezone';
...
moment.tz.setDefault('Etc/UTC');

Angular 中的一个可能的选择是创建一个单例实例LocaleService管理本地化相关参数。

import { Injectable } from '@angular/core';
import * as moment from 'moment-timezone';

@Injectable({
  providedIn: 'root'
})
export class LocaleService {

  constructor() {
    this.setDefaultTimezone();
  }

  setDefaultTimezone() {
    moment.tz.setDefault('Etc/UTC');
  }

  // other stuff related to localization
  ...setCurrentTimezone()
  ...setLocale()
}

然后,我们需要通过以下方式提供此服务AppModule,并且也不要忘记将其注入到全局组件中,例如AppComponent,以便被实例化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MomentJS/Date对象默认UTC 的相关文章

随机推荐