java Date 和 javascript Date

來源:互聯網
上載者:User

java Date 和 javascript Date

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

代碼如下:

 

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

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

 

 

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 :

 

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

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.