ACr*_*n24 4 javascript datetime momentjs typescript angular
我在我的 angular 项目中使用 MomentJS,我在不同的日期时区遇到了很多问题。
我的应用程序不应该考虑任何时区,但是我的后端 api 和前端之间的这种混乱,当我将标准时刻对象发送到 c# 后端时,它默认将其转换为 UTC,我总是得到 -1 天的日期。
我可以将 MomentJS 或 javascript Date 对象设置为始终默认为 UTC 并忽略小时/分钟/秒吗?
当我这样做时:moment() 它会根据时区和当前小时填充今天的值。
我想让moment()我的整个应用程序中始终具有 UTC 值并且时间始终为 00:00:00。
是否也有可能实现这一目标new Date()?
现在我一直在使用.toUTCString()afternew Date()但我的解决方案中有大量的日期变量,并且确保一切都.toUTCString()在它之后并不是真的,如果另一个开发人员错过了它会导致问题。我正在尝试找到一种在项目级别对此进行标准化的方法。
我的主要问题是使用 momentJS 比较方法.isBefore(), .isSame(), .isAfter()。因为当比较发生时,我所有的日期都包含不同的时间和不同的时区,所以它会将它们考虑在内,而不是按照我希望的方式行事。
您可以将时刻-时区与moment.
然后UTC使用以下代码设置默认时区:
import * as moment from 'moment-timezone';
...
moment.tz.setDefault('Etc/UTC');
Run Code Online (Sandbox Code Playgroud)
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()
}
Run Code Online (Sandbox Code Playgroud)
然后,我们需要通过 提供这个服务AppModule,也不要忘记将它注入到一个全局组件中,例如AppComponent,为了被实例化。
| 归档时间: |
|
| 查看次数: |
6165 次 |
| 最近记录: |