真机显示时间与获取的时间相差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/