聯系信息

                        js時間戳問題,js new Date()的正確格式

                        2020-12-02 11:50 By 致遠 4115
                        當前位置: 企業網站建設 > Jquery > js時間戳問題,js new Date()的正確格式

                        近日做一個招標的項目,發布項目時需要指定有效期,前后端都驗證一下,而在前端驗證的時候遇到了問題,相同日期的不同格式的得到的時間戳不一樣,比如:2020-12-01與2020-12-1得到的結果就不一樣。

                        js時間戳錯誤

                        好奇之下,我又試了一些其他的個是:

                        js時間戳錯誤定義列表


                        var d1='2020-12-1',     //1606752000000
                            d2='2020-12-01',    //1606780800000
                            d3='2020-09-1',     //1598889600000
                            d4='2020-9-1',      //1598889600000
                            d5='20-09-01',      //NaN
                            d6='2020-09-01',    //1598918400000
                            d7='2020/09/01',    //1598889600000
                            d8='2020-09-01',    //1598918400000
                            d9='2020,09,01',    //1598889600000
                            d10='2020,9,1',     //1598889600000
                            d11='2020/9/01',    //1598889600000
                            d12='20/9/1',       //NaN
                            d13='20,09,1';      //NaN
                        console.log(
                            new Date(d1).getTime(),
                            new Date(d2).getTime(),
                            new Date(d3).getTime(),
                            new Date(d4).getTime(),
                            new Date(d5).getTime(),
                            new Date(d6).getTime(),
                            new Date(d7).getTime(),
                            new Date(d8).getTime(),
                            new Date(d9).getTime(),
                            new Date(d10).getTime(),
                            new Date(d11).getTime(),
                            new Date(d12).getTime(),
                            new Date(d13).getTime(),
                            );


                        結果發現采用分隔符/或者,的是一致的,而兩位數年份都是錯誤的。于是查了一下手冊,手冊中也明確說明,應該使用前面兩種分隔符,而不是-或者其他字符。但是,為毛input date獲取到的值時“Y-m-d”這種格式?!

                        new Date()的正確格式


                        new Date() ;     //參數可以為整數; 也可以為字符串; 但格式必須正確  
                        new Date(2009,1,1);       //正確 
                        new Date("2009/1/1");    //正確 
                        new Date("2009-1-1");    //錯誤 
                        new Date( year, month, date, hrs, min, sec)  按給定的參數創建一日期對象 
                        參數說明: 
                          year的值為:需設定的年份-1900。例如需設定的年份是1997則year的值應為97,即1997-1900的結果。所以Date中可設定的年份最小為1900; 
                          month的值域為0~11,0代表1月,11表代表12月; 
                          date的值域在1~31之間; 
                          hrs的值域在0~23之間。從午夜到次日凌晨1點間hrs=0,從中午到下午1點間hrs=12; 
                          min和sec的值域在0~59之間。 
                          year只能取fullYear,如Date day=new Date(20,12,1); 也是錯誤的

                        無奈之下只好想辦法統一格式,因需要input date的值可以直接獲?。ㄊ怯眠B字符-分割的),當前日期需要程序獲取,我就還采用連字符,只要統一日期為兩位數就是正確的,所以只需補零。

                        //日期補零函數
                        function formatDate(date){
                            date+='';//注意這里,因為傳過來的本身是一個數字,不能用length獲取長度。這里有幾種做法,一種如我這里,加個字符串就變成字符串了,還有var new String(date)強制轉換成字符串,當然還可以判斷其是否小于10,小于10補零即可
                            if(date.length<2){
                                return '0'+date;
                            }else{
                                return date;
                            }
                        }
                        完整代碼如下:
                        var etime=new Date(_etime).getTime(),//_etime是用戶通過input date選取的日期
                            date=new Date();
                        var now=date.getFullYear()+'-'+formatDate(date.getMonth()+1)+'-'+formatDate(date.getDate());
                        now=new Date(now).getTime();
                        var days=(etime-now)/86400000;
                        if(days<=7){
                            alert('有效期不能少于7天!');
                            return false;
                        }else if(days>60){
                            alert('有效期不能超過60天!');
                            return false;
                        }


                        © 致遠 2020-12-02,原創內容,轉載請注明出錯:js時間戳問題,js new Date()的正確格式

                        留下您的評論

                        > 人人爽人人澡人人高潮_免费无码国产V片在线观看_18禁裸乳无遮挡免费观看_国产99在线 | 欧美_中文字幕无码无码专区 国产AV午夜精品一区二区三区 午夜成人爽爽爽视频在线观看 亚洲人成网站在线播放2020 宅男噜噜噜66网站在线观看 成人影院YY111111在线观 日韩人妻中文无码一区二区七区 亚洲第一AV网站 近親五十路六十被亲子中出 少妇高潮喷潮久久久影院 无码喷水一区二区浪潮AV