【问题标题】:Adding moment.js timezone in Angular project with angular cli - webpack使用 Angular cli 在 Angular 项目中添加 moment.js 时区 - webpack
【发布时间】:2018-09-28 19:58:36
【问题描述】:

我需要使用 Angular cli / webpack 在 Angular 项目中添加 moment.js 和时区构建。

我在 ts 文件中导入了时刻时区

import * as moment from 'moment-timezone';

我用我需要的脚本配置了angular.json 文件

{
  "projects": {
            ..
        "styles": [],
        "scripts": [
          "node_modules/moment/moment.js",
          "node_modules/moment/locale/es.js",
          "node_modules/moment-timezone/moment-timezone.js",
          "node_modules/moment-timezone/builds/moment-timezone-with-data-2012-2022.js"
            ]
...
}

这是部分工作,但我有两个问题:

  • 没有添加moment-timezone-with-data-2012-2022.js
  • 当我检查在 vendor.js 中添加了哪些文件时,我发现包含所有时刻和时刻时区文件夹

我不希望将完整文件夹添加到 vendor.js。我能做什么?

【问题讨论】:

  • “我不希望将整个文件夹添加到 vendor.js”是什么意思?

标签: angular webpack angular-cli momentjs


【解决方案1】:

我有同样的问题。

import * as moment from 'moment-timezone';

moment-timezonemoment 的所有内容添加到捆绑包中,这意味着每个语言环境和每个时区。 我所做的只是导入我需要的东西:

import moment from 'moment-timezone/moment-timezone';
import 'moment/locale/sk';
import { MomentInput } from 'moment';

我还为我的 DateUtils 添加了静态初始化程序,并从时区构建中复制了我的时区的时区数据,因为我只想要一个时区:

static initialize(): void {
  moment.locale('sk');
  moment.tz.add([
    'Europe/Prague|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 16M0 1lc0 1tA0 17A0 11c0 1io0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5'
  ]);
  moment.tz.link('Europe/Prague|Europe/Bratislava');
  moment.tz.setDefault('Europe/Bratislava');
}

现在只有在整个应用程序中 DateUtils 会导入 moment 的东西,所以没有人应该错误地导入整个包。

【讨论】:

    【解决方案2】:

    要在 Angular 中使用 moment.js,请先安装 moment.js:

    npm i moment --save
    

    然后在需要的地方导入 moment.js:

    import * as moment from 'moment';
    

    现在您可以像在其他 JavaScript 项目中一样使用 moment:

    moment().format();
    

    【讨论】:

    • 不幸的是,这并不能解决 OP 的问题。问题是关于“时刻-时区”而不是“时刻”
    猜你喜欢
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多