如何在Angular 2 App中包含moment-timezone

San*_*ale 17 node.js angular-moment angular2-directives angular

我意识到,这个问题是重复但前一次没有提供适当的答案时刻包已经安装

1.安装包裹

npm install moment-timezone --save

node_modules目录中
|
| --moment
| --moment-timezone

目录存在

2. Index.html包含脚本

<script src="node_modules/moment-timezone/moment-timezone.js"></script>
Run Code Online (Sandbox Code Playgroud)

System.config.js

  var map = {
    'moment':             'node_modules/moment',
    'momentzone':         'node_modules/moment-timezone'
  };
  var packages = {
    'moment':             { defaultExtension: 'js' },
    'momentzone':         { defaultExtension: 'js' }
  };
Run Code Online (Sandbox Code Playgroud)

3.Inside component.ts文件

import * as moment from 'moment/moment';

export class TimeComponent implements OnInit{
   ngOninit(){
         console.log(moment("2014-06-01T12:00:00Z").tz('America/Los_Angeles').format('ha z'));

   }
}
Run Code Online (Sandbox Code Playgroud)

应该导入什么来防止错误 属性tz在"Moment"类型上不存在

小智 21

这可能有所帮助.

对angular-cli或npm install运行以下命令.

sudo npm install moment moment-timezone --save
npm install @ types/moment @ types/moment-timezone --save-dev

对于npm systemjs.config.js

   map: {
        'moment': 'npm:moment',
        'moment-timezone': 'npm:moment-timezone/builds'
      }
packages: { 
      'moment': {
          main: './moment.js',
          defaultExtension: 'js'
       },
      'moment-timezone': {
        main: './moment-timezone-with-data-2010-2020.min.js',
        defaultExtension: 'js'
      }
}
Run Code Online (Sandbox Code Playgroud)

你想在.ts文件中使用时区的地方

import * as moment from 'moment-timezone';

@Component({
  selector: 'my-app',
  template: `<h1>Hello {{name}}</h1>`,
})

export class AppComponent {    
  name = 'Angular';
  jun = moment();// creating obj.
  constructor() {
    this.jun.tz('America/Los_Angeles').format('hh : mm : ss a z');
    console.log(this.jun.tz('America/Los_Angeles').format('hh : mm : ss a z'));
    console.log(moment.tz.names()); // for all time zone.
  }
Run Code Online (Sandbox Code Playgroud)

  • 为什么 sudo 用于 npm 安装?这不应该避免吗? (3认同)

Mat*_*att 17

更新了Angular 4

moment-timezone在命令行上安装:

npm i -S moment-timezone
Run Code Online (Sandbox Code Playgroud)

moment-timezone在组件中导入:

import * as moment from 'moment-timezone';
Run Code Online (Sandbox Code Playgroud)

根据文档使用它:

this.time = moment().tz('America/New_York').format('HH:mm:ss z')
Run Code Online (Sandbox Code Playgroud)

美国东部时间16:20:42

文档

时刻文件

时刻时区文档

注意:moment故意未安装或导入,因为它是依赖项moment-timezone.


vul*_*ulp 7

要在 2018 年为 Angular安装moment-timezone

  1. 安装 moment.js 和 moment-timezone

    npm install moment moment-timezone @types/moment-timezone --save

  2. 在 .ts 文件中导入这些模块

    import * as moment from 'moment'; import 'moment-timezone';

Github 问题:如何解决“tz”构建错误。