首页 > 解决方案 > 在 ES 5 中使用字符串方法

问题描述

我无法在 ECMA 5 中使用一些字符串方法,例如:

->padStart();
->getHours();(different time formats)

我正在尝试使用字符串方法分别提取时间和小时,但它会引发类型错误。

var date = parseInt(reverseString(hexPayload.substring(0,8)),16).toString(10);
result.DateAndTime = new Date(date);
result.Volume1 = volume(reverseString(hexPayload.substring(18,26))) + 'meterCube' + date.getHours();

我可以在浏览器 javascript 中获得所需的输出。但不能将它用作基于 ES 5 的 otto javascript 引擎。任何人都可以建议我它是如何完成的或实现这一目标的替代方法。

标签: javascript

解决方案


关于getHours它不是String.prototype方法,它是Date.prototype方法。它是 JS 中最古老的方法https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getHours#Browser_compatibility。所以你的引擎必须支持。如果不让我们了解您正在使用的引擎。

在你的代码中

var date = parseInt(reverseString(hexPayload.substring(0,8)),16).toString(10);
result.DateAndTime = new Date(date);
result.Volume1 = volume(reverseString(hexPayload.substring(18,26))) + 'meterCube' + date.getHours();

在是数字不是日期date.getHours()_ 可能这就是你有错误的原因。date


关于padStart,有一些 polyfills 你可以使用它们,或者复制。但需要在使用前进行设置。例如https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart#Polyfill


推荐阅读