2013-09-02 10 views
29

データからISOフォーマットされた日付を取得しました。実際にやりたいことは、自分のテンプレートから直接日付形式を変更することです。Meteorのハンドルバーテンプレートの中から日付をフォーマットする

このような

:私は一瞬のライブラリを使用していますので、私はこのような何か書くことができる

{{format my.context.date "myFormat"}} 

:私はそれは私の場所だと思うので、それはいいだろう

{{formatDate my.context.date "DD.MM.YYYY HH:mm"}} // 03.09.2013 18:12 

をこれを行うことができるはずです。私のテンプレートで。

+1

StackOverflowが使用するQ&Aフォーマットに従うことができますか?すなわち、あなたの解答に質問を投稿する。そうでなければ誰かが私の間違いを宣伝のためにこれを殺してしまいます。また、あなたの答えを受け入れることを忘れないでください! – booyaa

+0

@booyaaこの点をありがとう。 –

答えて

80

解決策は非常に簡単で、誰かが役に立つと思うかもしれません。 ほとんどのプロジェクトでは、使用したいいくつかの日付形式があります。 フォーマットを読みやすい名前で定義するのは良い方法です。

この例では、私はちょうど「短い」と「長い」を取ったが、あなたが見ると、それは非常に伸びやすい。

だから私は私のクライアントスクリプトでオブジェクトを作成しました:

var DateFormats = { 
     short: "DD MMMM - YYYY", 
     long: "dddd DD.MM.YYYY HH:mm" 
}; 

はまた、私はハンドルヘルパー「は、FormatDate」を作成しました。

編集:今、あなたはあなたが見ることができるように、私は私のヘルパーにmoment.jsのlibが使用代わりに、ハンドルバー

// Deprecated since version 0.8.0 
Handlebars.registerHelper("formatDate", function(datetime, format) { 

// Use UI.registerHelper.. 
UI.registerHelper("formatDate", function(datetime, format) { 
    if (moment) { 
    // can use other formats like 'lll' too 
    format = DateFormats[format] || format; 
    return moment(datetime).format(format); 
    } 
    else { 
    return datetime; 
    } 
}); 

のUIを使用する必要があります。インストールするには、コマンドラインから「meteor add momentjs:moment」と入力してください。

そして今、どこにでも私のテンプレートで、私はこのように、2つのparamsでそれを使用することができます。

{{formatDate MyISOString "short"}} // 02 September - 2013 
{{formatDate MyISOString "long"}} // Monday 02.09.2013 18:00 

独自のフォーマットを作成したい場合は、momentjsドキュメントhttp://momentjs.com/docs/

を見てみましょう

ハッピーコーディング!

+3

最後に残念ですが、検索結果に役立つ答えを受け入れてください;) – booyaa

+0

if(瞬間)テスト(Deps recompute関数の例外:TypeError:未定義は関数ではありません)では、これは意味をなさないテストです。私は(datetime instanceofの瞬間)を試みたが、それはfalseを返します...これは何でしょうか? –

+1

申し訳ありませんが、別の理由で失敗しています。私はdatetimeに瞬時を入力しています。返す瞬間(datetime)は、完全なtimezoned値を持つ文字列を返します。 .format( "Anything at all")を追加すると、Deps recompute関数から例外が発生します。TypeError:undefinedは関数ではありません。何か案は? –

関連する問題