java Date 和 javascript Date,datejavascript

來源:互聯網
上載者:User

java Date 和 javascript Date,datejavascript

最近寫一個頁面,上面要展示下日期。在Java中產生了Date,然後將這個Date通過velocity送入vm模板當中

代碼如下:

var dates = new Date("$!{pp.date}");var dateStr = date2String(dates);

其中 date2String是這樣的,函數參考

http://www.w3school.com.cn/jsref/jsref_obj_date.asp


function date2String(date) {var year = date.getFullYear();var month = date.getMonth();var day = date.getDate();var hour = date.getHours();var minute = date.getMinutes();var second = date.getSeconds();var monthStr = (month <= 9 ? "0":"") + month;var dayStr = (day <= 9 ? "0":"") + day;var hourStr = (hour <= 9 ? "0":"") + hour;var minuteStr = (minute <= 9 ? "0":"") + minute;var secondStr = (second <= 9 ? "0":"") + second;return ""+year+"-"+monthStr+"-"+dayStr+"  "+hourStr+":"+minuteStr+":"+secondStr;}

結果解析發現時間全亂了!

首先是月份不對,這個是一個自己粗心的bug,因為getMonth得到的結果是0-11的,因此需要在後面+1,這個比較容易搞定

後面的並沒有因為少1的原因而變形。

現在有兩種方案:其一,直接傳遞一個Java修改好格式後的字串給js,其二想想別的辦法。

本來想偷懶的就用其一吧。但是想了想還是其二更能偷懶,而且還能學到新東西,用其二吧。


想了想直接將Date對象傳遞過來可能在實現上確實比較詭異。Date應該都是從1970年開始時的時間差,因此用一個long做建構函式的參數應該是有的。當然在上面的

中文w3c的網頁上只給出了一種構造方法,即取得當前的時間。


連前面的直接賦值date的都沒有事,因此覺得應該有別的建構函式,因此選擇再找找看,查看下Date的建構函式:

http://www.tutorialspoint.com/javascript/javascript_date_object.htm


new Date(milliseconds)

靠譜一點,畢竟是存放在底層的資料。

因此改成:

var dates = new Date($!{pp.date.getTime()});

靠譜多啦。搞定,看看原來的為啥這麼不靠譜。 

原來傳遞進去的Date是:

date=Sun Dec 14 09:40:11 CST 2014
date=Sat Dec 13 23:54:00 CST 2014

但是:

變成了     2014-12-14 23:40:11

和  2014-12-14 13:54:00

都是增加了14個小時!

列印後發現:

dates=Sun Dec 14 2014 13:54:00 GMT+0800

dates=Sun Dec 14 2014 23:40:11 GMT+0800

那麼就是時區的問題了!

根據 Wiki 上面的CST :


http://zh.wikipedia.org/wiki/CST


除了表示中國,還可以表示澳洲和美國中部時間。應該是美國中部時間比較靠譜,咱們在東8區, 那麼美國中部應該是在西6區。

查看下果不其然。


因此js是把CST當成了美國中部時間(Central Standard Time (North America))而不是(China Standard Time)。

從而導致對應的錯誤。折騰了一下還是能找到原因的哈哈。加油。


======

PS。還是要細心啊,不能老出問題了才發現問題然後去補救。測試的時候一定要細心。







聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.