真机显示时间与获取的时间相差8小时解决方案

之前有讲过ios系统的时间显示不支持‘-’所以转换成‘/’但是不知道是不是系统不兼容的问题,只要时间做了格式转换就会出现相差8小时的问题,如果只是把‘-’换成‘/’就没有这种问题,这里有两种解决方案

一:后端统一处理时间格式,这里有个前提就是前端都需要这种格式的时间

在startup.cs中进行配置:

services.AddMvc(options =>
{
//默认启用CSRF跨站请求伪造攻击保护机制
options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
}).AddJsonOptions(options =>
{
//不使用驼峰样式的key
//options.SerializerSettings.ContractResolver = new DefaultContractResolver();
//设置时间格式
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
//使用本地时间
options.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Local;
});

 

二:前端进行字符串截取得到想要的格式

 

 

 

这里有个建议就是最好后端能统一返回时间戳给前端,这样会出错率会比较低

 

时间戳转换:

// 格式化时间 

function formatTime(timeStamp) { 

    // 将/[0-9]/位的数字编成/0[0-9]/ 

    function getTwo(s) { 

        if (parseInt(s) < 10) { 

            return "0" + s; 

        } else { 

            return "" + s; 

        } 

    } 

 

    if (timeStamp.length < 13) { 

        timeStamp += "000"; 

    } 

    var d = new Date(parseInt(timeStamp)); 

 

    var year = d.getFullYear(); 

    var month = getTwo(d.getMonth() + 1); 

    var date = getTwo(d.getDate()); 

    var hour = getTwo(d.getHours()); 

    var minute = getTwo(d.getMinutes()); 

    var second = getTwo(d.getSeconds()); 

 

    return year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second; 

}

时间戳在线转化: https://tool.lu/timestamp/

 

 

 

最后推荐一个好用的网站: https://tool.lu/

posted @ 2020-01-08 15:21  苏苏苏en  阅读(1676)  评论(0编辑  收藏  举报