2016-06-21 123 views
0

我正在開發angularjs應用程序。 有一個變量被賦予一個日期值。該值正在從Web API中提取。這個變量的計算結果爲'25 - 5月 - 15'將25-May-16轉換爲'dd MMMM yyyy'格式

以下是我現有的代碼

//code to assign value (25-May-16 in this case) into $scope.models.AppointmentDate from Web API 
.... 
var DateVal = $scope.models.AppointmentDate; 
DateVal = $filter('date')(DateVal , 'dd MMMM yyyy'); 

此代碼給了我‘dateVal中所包含的變量無效的日期’值。 實現這一目標的最佳方法是什麼?

+0

在將它傳遞給過濾器之前,DateVal的值是多少? –

+0

DateVal在其中有「25-May-16」 –

+0

這不是有效的日期字符串 – devqon

回答

0

這意味着你沒有日期對象,但可能只是一個字符串。嘗試是這樣的:

// convert to date object 
$scope.models.AppointmentDate = new Date($scope.models.AppointmentDate); 

var DateVal = $scope.models.AppointmentDate; 
DateVal = $filter('date')(DateVal , 'dd MMMM yyyy'); 
+0

$ scope.models.AppointmentDate = new Date($ scope.models.AppointmentDate);在$ scope.models.AppointmentDate中給出無效日期 –

0

你應該嘗試moment.js

你可以使用它像

moment("25-may-16","dd-MMM-yy").format("dd MMMM yy"); 

與您的代碼和邏輯嘗試。矩也可用於angularJS。探索更多。

0

解析日期字符串到日期對象需要很多考慮。例如:new Date('25-May-16')可能適用於較新的瀏覽器,但不適用於較早的版本。它可能會或可能不適合您的情況。我強烈推薦moment.js,因爲它需要大多數頭痛的了,但如果你想有一個原生的JavaScript的解決方案,使用下面的代碼片段:

var DateVal = new Date($scope.models.AppointmentDate); 
DateVal = $filter('date')(DateVal , 'dd MMMM yyyy'); 

你試圖日期字符串傳遞到角的過濾器,它需要一個日期對象作爲輸入參數。

更新: MomentJS解決方案:

var DateVal = moment('25-May-16', 'DD-MMM-YY').toDate() 
DateVal = $filter('date')(DateVal , 'dd MMMM yyyy'); 

它傳遞的日期格式作爲第二個參數矩()是非常重要的,否則時刻將還原到原始日期解析方法

+0

使用新日期($ scope.models.AppointmentDate);給出'無效日期'問題 –

+0

我更新了我的答案。新的Date()在不同的瀏覽器上的工作方式不同。爲了避免這些痛苦,大多數人都會使用momentjs。 我希望更新的答案可以幫助你找出無效的日期問題。 –

相關問題