155  
查询码:00000719
真机显示时间与获取的时间相差8小时解决方案
作者: 陈一奇 于 2020年01月08日 发布在分类 / 人防组 / 人防移动端 下,并于 2020年01月08日 编辑
uni-app

之前有讲过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/



 推荐知识

 历史版本

修改日期 修改人 备注
2020-01-08 15:19:33[当前版本] 陈一奇 创建版本

 附件

附件类型

PNGPNG

知识分享平台 -V 4.8.7 -wcp