我已正确导入了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点),这不是正确的时间。
答案 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网站下载/使用预定义的捆绑包(参见上面的链接)。
希望这有帮助!