开发者问题收集

类型错误:formats.dateTimeString.toISOString 不是一个函数

2015-08-22
22871

我是 TypeScript 和 AngularJS 的新手,我正在尝试将 API 中的日期转换为类似这样的格式:

"8/22/2015"

... 转换为 ISO 日期。该日期已正确反序列化为 Date 类型的 TypeScript 属性。但是,当我尝试以下命令(在 typescript 中,并且 this.dateDisplay 是字符串类型)时

this.dateDisplay = formats.dateTimeValue.toISOString();

我收到错误:

TypeError: formats.dateTimeValue.toISOString is not a function at dataFormatsTests.js:42 at processQueue (angular.js:14567) at angular.js:14583 at Scope.$get.Scope.$eval (angular.js:15846) at Scope.$get.Scope.$digest (angular.js:15657) at Scope.$get.Scope.$apply (angular.js:15951) at done (angular.js:10364) at completeRequest (angular.js:10536) at XMLHttpRequest.requestLoaded (angular.js:10477)

我也去过 这个网站 并且它说我的浏览器支持 toISOString 函数。

所以,我的问题是:为什么我的浏览器、angular 或其他什么都无法识别 toISOString 函数?

2个回答

尽管 dateTimeValue 在 TypeScript 中被定义为日期,但它在运行时被实例化为字符串,因为它是从 API 中提取的。因此,TypeScript 可以正常编译,但当 javascript 运行时,它会看到 .toISOString() 被调用针对的是字符串,而不是日期。

JB123
2015-08-24

moment.js为date object.formats.datetimeValue创建包装器不是包装对象。要获取此包装器对象,只需使用支持的输入类型之一调用Moment()。因此,请这样转换:

818814299

我已经解决了上述问题。

Alamgir
2019-01-14