如何使用Aurelia / Typescript

时间:2016-09-12 14:16:42

标签: momentjs aurelia

我已正确导入了momentjs。它工作正常,但是当我尝试导入时刻时区时,我无法让它工作。我无法访问任何功能。

这是我的aurelia.json文件,我从npm加载它们:

{
      "name": "moment",
      "path": "../node_modules/moment",
      "main": "moment",
      "exports": "moment"
},
{
      "name": "moment-timezone",
      "path": "../node_modules/moment-timezone",
      "main": "moment-timezone",
      "deps": [ "moment" ],
      "exports": "tz"
}

以及我正在尝试将它们加载到文件中的地方:

import { autoinject } from "aurelia-framework";
import * as moment from "moment";
import * as tz from "moment-timezone";

@autoinject
export class GlobalUtil {

}

这是加载它们的正确方法吗?不幸的是,这对我不起作用。

现在,当我尝试指定时区时,我得到一个“Moment Timezone没有America / New_York的数据。”然后是console.logs(早上7点),这不是正确的时间。

1 个答案:

答案 0 :(得分:15)

也许我可以对此有所帮助。为了给出合适的说明,我将为Aurelia CLI应用程序添加时刻/时刻 - 时区的整个链条添加逐步说明。

安装moment.js

  • npm install --save moment
  • typings install dt~moment --global --save

安装时刻时区

  • npm install --save moment-timezone
  • typings install dt~moment-timezone --global --save
  

注意:我假设您要使用TypeScript。如果没有,请跳过上面安装说明中的第二步。

接下来,在 aurelia.json 的“依赖关系”部分配置两者:

{
    "name": "moment",
    "path": "../node_modules/moment",
    "main": "moment"
},
{
    "name": "moment-timezone",
    "path": "../node_modules/moment-timezone",
    "main": "moment-timezone",
    "deps": ["moment"]
}

最后,让我们用一个简单的例子来介绍如何实际使用它:

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

export class App {
  message: string;

  constructor() {
    // basic example of using moment().tz
    this.message = moment.tz("2014-06-01 12:00", "Europe/Amsterdam").format();
  }

}

那应该是它!到目前为止一切都那么好,至少对于配置部分而言。但是,正如您的问题已经表明的那样,您可能会收到以下趋势中的错误:

  

Moment Timezone没有欧洲/阿姆斯特丹的数据。见http://momentjs.com/timezone/docs/#/data-loading/

这意味着,默认情况下,时刻时区不知道该特定时区。作为错误消息提及的链接,您必须自己添加。例如:

moment.tz.add([
    'America/Los_Angeles|PST PDT|80 70|0101|1Lzm0 1zb0 Op0',
    'Europe/Amsterdam|EST EDT|50 40|0101|1Lz50 1zb0 Op0'
]);

为此数组添加尽可能多的时区。或者从momentjs网站下载/使用预定义的捆绑包(参见上面的链接)。

希望这有帮助!