2017-03-17 11 views
6

デンマーク語のロケールを使用しているとき、angular2の日付パイプに問題があります。それは、このような接尾期間と日付の日を出力angular2 date pipe locale_id period

{{myDate | date:'dd-MM-yyyy'}} 

::のように私は日付をフォーマット

17 - 03から2017

私は期待allthoughそれはこのようになる:

17-03-2017

ロケールはse tがこのようなapp.moduleで:

providers: [ {provide: LOCALE_ID, useValue: 'da-DK'} ] 

私はそれはおそらく、日付がフォーマットされている方法とは何かを持っているhttp://plnkr.co/edit/A5ddrKP5cmsSZ9bTqzPh

UPDATE

それをより明確にするために、このplnkrを行っていますデンマーク語でSeを以下:

var locale = 'da-DK'; 
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }; 
var date = new Date(2017,2,17); var result = new Intl.DateTimeFormat(locale, options).format(date); 
alert(result); 

が変身 - 17マート2017

お知らせ

+1

を削除するには、それをチェーン可能性は、スタックオーバーフローへようこそ!第三者のサイトだけでなく、質問内の[mcve]に関連するすべてのコードを入力してください。 –

+2

Angular2は内部的に 'dataPipe'に** Intl **を使用しますhttps://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Intlここではangular2と何も関係ないと思います。 angle2なしの例https://jsfiddle.net/9jsnz0yL/を参照してください。 – yurzui

+0

これでAngular2では問題ありません。 sv-SEを使用するようにあなたのフィドルを変更した場合、Intl.DateTimeFormatはドットなしで17を返します。私がda-DKを使用する場合、Intl.DateTimeFormatが17を返す理由と、17だけではないことを知っていますか? – renemundt

答えて

2

局在は、ECMAスクリプトの仕様を提供し、各JavaScriptエンジンは、独自の実装を提供し、「プラットフォームに依存しない」であるドットデンfredag​​> 。

APIがまだ存在しない場合は、Intl.jsという互換性の実装もあります。あなたはロケールデンマーク(デンマーク)hereの実装を見ることができます、利用可能なフォーマットが表示され、その日は常に後の期間を返します。

"availableFormats": { 
       "d": "d.", 
       "E": "ccc", 
       "Ed": "E 'den' d.", 
       "Ehm": "E h.mm a", 
       "EHm": "E HH.mm", 
       "Ehms": "E h.mm.ss a", 
       "EHms": "E HH.mm.ss", 
       "Gy": "y G", 
       "GyMMM": "MMM y G", 
       "GyMMMd": "d. MMM y G", 

カスタムパイプを作成し、期間

{{myDate | date:'dd-MM-yyyy'|removePeriod}}

@Pipe({name: 'removePeriod'}) 
    export class RemovePeriodPipe implements PipeTransform { 
     transform(input: string) { 
     return input.replace(/\./g, ''); 
     } 
    } 
+1

意味があります。私はremovePeriodパイプで行くか、 'longFormat' - > '17のように日付をフォーマットすると思います。代わりにマート2017 '。 – renemundt

関連する問題