Date 日期函式瀏覽器相容問題踩坑

2022-01-14 22:42:00 字數 3402 閱讀 7272

之前用layui做的一專案中,table中用到了日期格式化的問題。直接沒多想,擼**就完了唄,結果最近一段時間客戶反饋說顯示日期跟錄入日期不一樣(顯示日期比錄入日期多8個小時)。

當時腦子裡想的就是:「握草,這怎麼可能」。然後就溝通駐場同事排查問題。

當時的腦迴路是這樣的:

1、差8個小時——時區不對?

2、電腦設定有問題?

3、**有問題?

經過排查,只有乙個片區的使用者有反饋日期顯示不正確。

然後就開始排查瀏覽器,用的數字安全瀏覽器急速模式,那就是chrome核心啊,然後就從本地再測,神奇的一幕又發生了,我本地是沒問題的,然以後讓現場同事測試,也是沒問題的。但是就是使用者電腦上不行。

於是開啟了問題解決之路:調整**!

原來**是這樣的:

經過除錯發現,這個**在mozilla firefox跟chrome中是沒問題的。但是在ie以及部分低版本的chrome中是存在問題的。

根據上面的**,在不相容的情況下,出問題的**就是這一句:

好了,知道問題所在,開始動刀

傳入的時間格式時這樣的:2019-03-07t12:23:45,經過查閱資料才知道,

new date(「2019-03-07t12:23:45」);是存在相容性問題的。

相容結果彙總如下:

1、無參:所以瀏覽器都相容

2、有參:

1) 引數格式一日期「yyyy-mm-dd」:

ie> ie9-(不相容) 

> ie9+(相容,包含ie9)

mozilla firefox(相容)

chrome(相容)

2)引數格式二

日期時間「yyyy-mm-dd hh:mm:ss」:

ie    (不相容,不管哪個版本)

mozilla firefox(不相容)

chrome(相容)

日期時間「yyyy/mm/dd hh:mm:ss」

ie9+   (相容)

mozilla firefox(相容)

chrome(相容)

於是乎**就改成這樣子:

懶人看這:

//格式化時間 yyyy-mm-dd hh:mm:ss

function formatdatetime(v)

if(typeof v === 'string' && (v.indexof('t') > -1||v.includes('t'))) ;

var date = new date(v);

var y = date.getfullyear();

var m = date.getmonth() + 1;

m = m < 10 ? '0' + m : m;

var d = date.getdate();

d = d < 10 ? ("0" + d) : d;

var h = date.gethours();

h = h < 10 ? ("0" + h) : h;

var m = date.getminutes();

m = m < 10 ? ("0" + m) : m;

var str = y + "-" + m + "-" + d + " " + h + ":" + m;

return str;

}

最後貼個封裝的js日期格式化函式:

/** 

* 時間戳格式化函式

* @param format 格式

* @param timestamp 要格式化的時間 預設為當前時間

* @return 格式化的時間字串

*/function date(format, timestamp) else

}; var txt_weekdays = ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"];

var txt_ordin = ;

var txt_months = ["", "january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"];

var f = ,

d: function(),

j: function(),

l: function(),

n: function(),

s: function(),

w: function(),

z: function(),

// week

w: function() else else

} },

// month

f: function(),

m: function(),

m: function(),

n: function(),

t: function() else else

} },

// year

l: function(),

//o not supported yet

y: function(),

y: function(),

// time

a: function(),

a: function(),

b: function(),

g: function(),

g: function(),

h: function(),

h: function(),

i: function(),

s: function(),

//u not supported yet

// timezone

//e not supported yet

//i not supported yet

o: function(),

p: function(),

//t not supported yet

//z not supported yet

// full date/time

c: function(),

//r not supported yet

u: function()

}; return format.replace(/[\]?([a-za-z])/g, function(t, s) else if( f[s] ) else

return ret;

});

}

瀏覽器相容問題

我經常看到一些人提問說網頁錯位,和在火狐裡面看上去網頁是好的,在ie在錯位了.在web 下html css裡全看一些關於這些問題.還有有ul li什麼調整不好的.等等 全可以用css hack 解決的.解決方法 用positon relative 然後 top 0px left 0px 上面的top...

瀏覽器相容問題

給近兩天的工作乙個總結,給這週劃上句號。工作中遇到了在google顯示的很好的介面,在ie顯示的不是很好,但還能看,僅僅是顏色和和位置錯位,在360瀏覽器下看就是真的錯誤太大了,不顯示,樣式也亂了,於是走上解決瀏覽器相容之路。思路1 對應每個瀏覽器寫個css,判斷之,工作量太大,放棄。思路2 針對每...

瀏覽器相容問題

所謂的瀏覽器相容性問題,是指因為不同的瀏覽器對同 段 有不同的解析,造成 顯 效果不統 的情況。在 多 數情況下,我們的需求是,論 戶 什麼瀏覽器來檢視我們的 站或者登陸我們的系統,都應該是統 的顯 效果。所 以瀏覽器的相容性問題是前端開發 員經常會碰到和必須要解決的問題。在學習瀏覽器相容性之前,我...