如何在Angular 2类中使用moment-timezone?

时间:2016-05-31 08:13:45

标签: javascript typescript angular

我正在尝试在课堂上使用时刻时区。 这是我的打字。

"moment": "github:DefinitelyTyped/DefinitelyTyped/moment/moment.d.ts#a1575b96ec38e916750629839d2110cb96210f89",
"moment-timezone": "github:DefinitelyTyped/DefinitelyTyped/moment-timezone/moment-timezone.d.ts#f8a90040348e83926f44e690b209769c4f88b961"

我的导入:

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

我的用法:

var jun = moment("2014-06-01T12:00:00Z");
jun.tz('America/Los_Angeles').format('ha z');

我的错误:

Property 'tz' does not exist on type 'Moment'.

4 个答案:

答案 0 :(得分:9)

使用Typescript @types个包并通过 listener.support(methods::POST, handle_post1);//if this is the first msg I receive listener.support(methods::POST, handle_post2);//if this is the second msg I receive 导入。您可以使用所有import * as moment from 'moment-timezone';方法和成员变量moment导出它们。

我有一个使用SystemJS的完整示例 How to use moment-timezone in Angular2 via SystemJs

答案 1 :(得分:8)

请尝试以下代码:

import * as moment from 'moment-timezone';

   export class Page1 {  

     public setdate = moment(); // today date
     constructor(){
       this.setdate.tz("Asia/Singapore").format('YYYY-MM-DD HH:mm:ss');
       console.log(this.setdate.tz("Asia/Singapore").format('YYYY-MM-DD HH:mm:ss'));
     }
   }

答案 2 :(得分:7)

我遇到了同样的问题并以这种方式解决了这个问题:

打字(ambientDependencies):

"moment": "registry:dt/moment#2.8.0+20160316155526",
"moment-timezone": "github:DefinitelyTyped/DefinitelyTyped/moment-timezone/moment-timezone.d.ts#f8a90040348e83926f44e690b209769c4f88b961"

导入:

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

用法:

moment("2014-06-01T12:00:00Z")
  .tz('America/Los_Angeles')
  .format('ha z');

所以,基本上我正在对当前导入的对象执行.tz()函数(事实上它并不存在),但是时刻时区的导入扩展了它的附加功能。

我还使用systemjs-plugin-json在moment-timezone库中正确加载时区定义的json对象。

我希望这会有所帮助。

答案 3 :(得分:7)

我将在2020年进行更新。

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

import moment from 'moment-timezone';

...

// do this - outside of any class is fine    
moment.tz.add('America/Los_Angeles|PST PDT|80 70|01010101010|1Lzm0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0');


...

someMethod() {
    const m = moment(the_date);
    ...
    const mFormatted = m.tz('America/Los_Angeles').format('YYYY-MM-DDTHH:mm:ssZZ');
}

时区定义可以在https://github.com/moment/moment-timezone/blob/develop/data/packed/latest.json上找到。我用它来定义自己的内容,而不是全部阅读。