2016-08-24 94 views
0

我創建了一個休息服務來返回一個日期。java和angularjs之間的錯誤日期值

我在後端使用Java,在前端使用AngularJS。

我在Java代碼中是這樣的:

SimpleDateFormat myFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    Date myDate = myFormat.parse("1900-01-01 12:00:00"); 
    return myDate; 

當我從服務中獲得這個值我這個代碼將其顯示在前端:

<div> 
    <h4>{{myDate | date:'yyyy-MM-dd HH:mm:ss'}}</h4> 
</div> 

的頁面顯示「1899-12-31 23:56:16」。

我再次嘗試,但與當前的日期,它通常在系統中顯示。

+1

聞起來就像是一個時區表示問題。哪些時區是客戶端和服務器? – Makoto

+0

這兩個時區都是格林威治標準時間(GMT):-5,但錯誤總是不會發生,有時會顯示正確的小時 – marcosaz95

+0

這是您的後端?暫時跳過HTML/AngularJS部分,並通過Java代碼進行跟蹤。這個問題不適合堆棧溢出,沒有足夠的信息和沒有具體的編程問題。 –

回答

1

我與所有的1月1日1900年至2020年進行測試,而事實上,Java和JavaScript顯然返回不同毫秒值在一定的時間間隔(事實上,僅1912年至1940年間相一致的日期)。

我測試經驗,這在某種程度上隨機差異是由缺乏一個特定的時區的解析Java中的日期字符串時出現(在JavaScript部分,使用的參考是隱含UTC,我猜)。而且,在解析日期時指定TimeZone總是一個好習慣。

因此,我建議你在Java程序中添加對UTC(或GMT + 0000)的時區符:

SimpleDateFormat myFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z"); 
    Date myDate=myFormat.parse("1900-01-01 12:00:00 +0000"); 

我堅持認爲,在我的猜測中,AngularJS小腳本從UTC引用,不管客戶端實際上在哪個時區。

+0

是的,它工作正常,感謝您的幫助 – marcosaz95

+0

你很重要。 –