iOS Safari显示来自.toLocaleString()和.slice()的不同数据

时间:2016-02-21 04:33:35

标签: javascript ios iphone mobile-safari

我正在通过.ajax附加来自Dark Sky API的数据,用于我制作的简单天气应用。

当您点击每天的预测时,会显示有关日出/设定时间以及最低和最高温度的时间的其他信息。在Windows机器上查看时,一切看起来都很好。但是在iPhone上查看时,上述时间显示不正确。我用于附加数据的代码如下:

//THIS DATA IS RETURNED INACCURATELY ON IOS-------------------------
                    var sunsetTime = new Date(forecast.sunsetTime * 1000);
                    sunsetTime = sunsetTime.toLocaleString();
                    sunsetTime = sunsetTime.slice(11, 15) + 'PM';

                    var sunriseTime = new Date(forecast.sunriseTime * 1000);
                    sunriseTime = sunriseTime.toLocaleString();
                    sunriseTime = sunriseTime.slice(11, 15) + 'AM';

                    var minTempTime = new Date(forecast.temperatureMinTime * 1000);
                    minTempTime = minTempTime.toLocaleString();
                    minTempTime = minTempTime.slice(11, 15) + 'AM';


                    var maxTempTime = new Date(forecast.temperatureMaxTime * 1000);
                    maxTempTime = maxTempTime.toLocaleString();
                    maxTempTime = maxTempTime.slice(11, 16) + 'PM';
                    //END OF INACCURATE RETURNS-------------------------------------------

在iOS上,时间显示为“,20AM”或“,20PM”我不知道如何在iPhone上进行调试,因此我们将非常感谢任何帮助。

指向我的代码笔的链接:http://codepen.io/DDD37/pen/GozGGx

1 个答案:

答案 0 :(得分:0)

经过更多研究后,我发现.toLocaleString()会根据浏览器返回格式不同的数据。我改变了我的代码以获得从new Date到...

的时间
 var sunsetTime = new Date(forecast.sunsetTime * 1000);
                    sunsetTime = sunsetTime.toString();
                    sunsetTime = sunsetTime.slice(16, 21);
                    sunsetTime = tConvert(sunsetTime);

...具有将24小时时间改为12小时的功能......

  //Funciton to convert 24 hour time to 12:
function tConvert(time) {
    // Check correct time format and split into components
    time = time.toString().match(/^([01]\d|2[0-3])(:)([0-5]\d)(:[0-5]\d)?$/) || [time];

    if (time.length > 1) { // If time format correct
        time = time.slice(1); // Remove full string match value
        time[5] = +time[0] < 12 ? 'am' : 'pm'; // Set AM/PM
        time[0] = +time[0] % 12 || 12; // Adjust hours
    }
    return time.join(''); // return adjusted time or original string
}