2016-07-05 242 views
1

我問了一個關於通過Moment.js meridiem函數格式化AM/PM的問題。順便說一句,我使用的版本2.9在Moment.js中格式化longDateFormat

我成功地加入時期的AM/PM的輸入,並使用該

moment.locale('en', { 
    meridiem: function(hour, minute, isLower) { 
     if (hour < 12) { 
      return isLower ? 'a.m.' : 'A.M.'; 
     } else { 
      return isLower ? 'p.m' : 'P.M.'; 
     } 
    } 
}); 

現在我遇到了一個問題,採用小寫的,我需要做同樣的longDateFormat字符串的格式類型。

的字符串是"h:mm:ss a"和返回時間將當前時間,但有一個大寫的AM/PM

我需要返回當前時間,但一個輸入格式應下午上午

在當下docs longDateFormat是一個對象不是函數我怎麼會去格式化meridiem在這裏?

******************** EDIT ****************

下面是一個例子我的問題。

meridiem設置正常工作與一個h z輸入。它是小寫字母並有句點。 enter image description here

meridiem設置不會影響longDateFormat字符串。上午/下午總是大寫,沒有句點。無論我是否改變最初應用的meridiem設置。我該如何改變這一點?

HTML enter image description here

{{last_update|date:"MMMM d, y 'at' h:mm:ss a"}}. 

結果 enter image description here

Last updated on July 6, 2016 at 8:25:00 AM. 

感謝

+0

答案在你以前的問題:)。如果您使用[接受的答案](http://stackoverflow.com/a/38204712/4131048),您將始終有** a.m./p.m。**小寫。如果您使用[我的答案](http://stackoverflow.com/a/38204793/4131048),您將有** a.m./p.m。**案件感知(取決於格式中的「a」或「A」)。如果你設置了'A'(反向默認邏輯),你的代碼片段返回** AM/PM **,如果你指定格式爲'a'並且** a.m./p.m。** – VincenzoC

+0

Hi @VincenzoC我沒有關注你。即使設置了meridiem,longDateFormat也不正確。longDateFormat a返回一個始終大寫的AM PM,不包含句點 – gwar9

+0

如果刪除'meridiem'定製,會發生什麼情況?在我看來,由於meridiem函數中的三元運算符,您將得到** AM/PM **大寫。當格式包含小寫'a'時,'isLowerCase'爲'true',而當您使用大寫'A'時,'isLowerCase'爲'false'。刪除'isLowerCase'檢查應該可以解決您的問題。也許你可以添加一個片段,重現你的問題,進一步澄清你的問題。 – VincenzoC

回答

2

由於您使用的角度,你必須使用angular-moment採取內部指令和過濾器的優勢瞬間。

角度矩提供了一個amDateFormat過濾器格式化日期使用了矩形.js格式()方法作爲文檔說。 下面的代碼可以幫得到你的願望:

angular.module('MyApp',['angularMoment']) 
 
.run(function(){ 
 
    moment.locale('en', { 
 
    meridiem: function(hour, minute, isLower) { 
 
     if (hour < 12) { 
 
     return isLower ? 'a.m.' : 'A.M.'; 
 
     } else { 
 
     return isLower ? 'p.m.' : 'P.M.'; 
 
     } 
 
    } 
 
    }); 
 
}) 
 
.controller('AppCtrl', function($scope) { 
 
    $scope.last_update = new Date(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-moment/0.10.3/angular-moment.min.js"></script> 
 

 
<div ng-app="MyApp" ng-controller="AppCtrl"> 
 
    With angular default date filter: <br/> 
 
    {{last_update|date:"MMMM d, y 'at' h:mm:ss a"}} 
 
    <br/> 
 
    With angular-moment date filter: <br/> 
 
    {{last_update|amDateFormat:'dddd, MMMM Do YYYY, h:mm:ss a'}} 
 
    
 
</div>

在你的榜樣,你正在使用的角度默認date filter

+0

非常感謝文森佐,就像你回答我意識到我在使用angulars日期格式一樣。角矩是一個很好的解決方案。謝謝你的幫助! – gwar9