之前有講過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/