2016-03-01 124 views
0

我有一個註冊表單,詢問用戶的開始日期。我正在使用MEAN框架,這意味着Im在前端使用AngularJs。從字符串格式到日期格式的隱藏日期輸入

我迄今所做的:

首先我嘗試使用下面的代碼,但它不能在IE瀏覽器火狐&工作。

<input type="date" name="startDate"> 

然後我嘗試了以下REGEX,我發現this SO問題。

^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$ 

完美的作品。下面是它在我的應用程序中的工作原理圖。

enter image description here

的問題:

當用戶提交的數據被保存在MongoDB中的形式。在上面的圖片中,你可以看到數據被保存爲一個字符串。我想將其轉換爲適當的日期格式,以便我可以在其服務器端執行操作(Node.js),即過濾所有2015年後啓動的用戶或離開1999年& 2001等。

任何建議都會有所幫助。

UPDATE:

目前我正在測試moment.js。一旦我有結果會更新我的問題。

結果:

我嘗試以下使用moment.js:

console.log("MOMENT" + moment("1993-03-25").format()); 

以下的輸出是:

MOMENT 1993-03-25T00:00:00+00:00 

我不知道這是否是正確的格式保存在MongoDB中,並允許我對它執行服務器端操作。

+0

這是從蒙戈文檔'內部,Date對象存儲爲一個64位整數代表自Unix時代(1970年1月1日)以來的毫秒數,其結果是在過去和未來約有290億年的可表示日期範圍。' – Aukhan

回答

0

您需要將moment對象轉換爲JavaScript日期之前,你可以MongoDB中保存它作爲一個日期字段:

moment("1993-03-25").toDate() 
+0

非常感謝您的答覆。以上代碼輸出格式爲'Thu Mar 25 1993 00:00:00 GMT + 0000(GMT)'。這是保存的正確格式嗎? – Skywalker

+0

是的,這是正確的格式。它實際上是一個JavaScript日期對象,但是,Mongo知道如何處理這些對象。 – Jaco