我意识到,这个问题是重复的,但前一次没有提供适当的答案 时刻包已经安装
1.安装包
npm install moment-timezone --save
在 node_modules 目录中
|
| --moment
| --moment-时区
目录
2 Index.html 包含脚本
<script src="node_modules/moment-timezone/moment-timezone.js"></script>
System.config.js
var map = {
'moment': 'node_modules/moment',
'momentzone': 'node_modules/moment-timezone'
};
var packages = {
'moment': { defaultExtension: 'js' },
'momentzone': { defaultExtension: 'js' }
};
3.Inside component.ts file
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'));
}
}
应该导入什么来防止错误 属性tz在“Moment”类型
上不存在答案 0 :(得分:19)
这可能会有所帮助。
为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'
}
}
你想在.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.
}
答案 1 :(得分:16)
在命令行上安装moment-timezone
:
npm i -S moment-timezone
在您的组件中导入moment-timezone
:
import * as moment from 'moment-timezone';
根据文档使用它:
this.time = moment().tz('America/New_York').format('HH:mm:ss z')
美国东部夏令时间16:20:42
注意:
moment
故意未安装或导入,因为它是moment-timezone
的依赖项。
答案 2 :(得分:1)
要在2018年为Angular安装瞬间时区:
安装moment.js和moment-timezone
objstr22 = `{20181218-20181228={currencyCode=USD, totalPrice=469.4, formattedPrice=$469, cheapest=false},
20181218-20181226={currencyCode=USD, totalPrice=469.4, formattedPrice=$469, cheapest=false},
20181218-20181227={currencyCode=USD, totalPrice=451.4, formattedPrice=$451, cheapest=false}}`;
objstr22 = objstr22
.replace(/ /g, "")
.replace(/([\-\w\d]+)=/g, '"$1"=')
.replace(/=([\w\d\.\$]+)/g, ':"$1"')
.replace(/=([[{])/g, ":$1");
console.log(objstr22);
let obj22 = JSON.parse(objstr22);
for (o of Object.keys(obj22)) {
console.log(o, obj22[o]);
}
将这些模块导入您的.ts文件
{responseType: ResponseContentType.Blob }
Github问题:How to resolve the 'tz' build error.
答案 3 :(得分:0)
该错误表明Typescript编译器无法在.tz(...)
的类型定义(类型)上找到moment
方法。
您需要做的只是安装moment-timezone
的打字,因此会将tz
添加到moment()
。
(你通常会为你将要使用的每个lib安装一个类型。有些东西,比如angular和moment,它们的类型定义文件嵌入libs的源代码中,从而使你无需安装他们的类型。)
所以,如上所述,只需安装moment-timezone
的打字:
# if you have typings version 1.X.X
typings install moment-timezone --save --global
# if you have typings version 0.X.X
typings install moment-timezone --save --ambient
一切都应该有效......如果你再做一件事:
将您的配置从momentzone
重命名为moment-timezone
(并添加.js
个文件):
var map = {
'moment': 'node_modules/moment/moment.js',
'moment-timezone': 'node_modules/moment-timezone/moment-timezone.js'
};
var packages = {
'moment': { defaultExtension: 'js' },
'moment-timezone': { defaultExtension: 'js' }
};
这是必需的,因为您在此处使用的名称是您将在import
中使用的名称。您在import
中使用的名称是typescript编译器用于查找类型定义的名称。您安装的打字定义了一个名为moment-timezone
的模块,而不是momentzone
。
之后,使用:
import * as moment from 'moment';
import 'moment-timezone'; // since this module only has side-effects, this is enough
应该是全部。
PS。:在上面的设置中,您的编译器将从moment
的源和moment
的输入(moment-timezone
函数)中选择tz
的输入来自DefinitelyTyped存储库(typings.json)。
但有时,他们并不好玩。如果您遇到这种情况,则必须使用来自DefinitelyTyped存储库(typings.json)的moment
类型的来源覆盖moment
的源代码。
换句话说:
# Only do this if installing moment-timezone alone didn't work...
# if you have typings version 1.X.X
typings install moment moment-timezone --save --global
# if you have typings version 0.X.X
typings install moment moment-timezone --save --ambient
答案 4 :(得分:0)
我遇到了同样的问题,并做了acdcjunior建议的所有事情,但也必须安装时刻节点的输入:
typings install dt~moment-node --save --global
这样做之后就像魅力一样。
答案 5 :(得分:0)
这就是我用的
moment(currentTime).tz(timeZone);
这是一个正在工作的Stackblitz https://stackblitz.com/edit/angular-moment-timezone-23