2

私のC#コードでは、次のデータ型を持っています

public DateTime? Created { get; set; }

私のかみそりのコードでは、これは次のように出力されます。

<td>@Model.Created</td>

5/23/2012 1:26:39 PM

フォーマットを次のように変更したいと思います。

5/23/2012 13:26

誰かが私にこれを行う方法を教えてくれますか?

4

4 に答える 4

2

toString メソッドを呼び出してマスクを渡す必要があります

<td>@Model.Created.toString("dd/MM/yyyy HH:mm")</td>
于 2012-07-23T15:21:15.997 に答える
1

あなたは確かに使用することができます

@Model.Created.Value.ToString(myFormat);

myFormatはフォーマット文字列です

http://msdn.microsoft.com/en-us/library/az4se3k1.aspx

http://msdn.microsoft.com/en-us/library/8kb3ddd4

探している特定の形式については、myFormat文字列 "MM/dd/yyyy HH:mm" を試してください。具体的には、「H」を指定すると、午前/午後の形式ではなく、24 時間制になります。HH は、必要に応じて 24 時間制のクロックの先頭に 0 を埋め込むことを保証します。

Createdが null になる可能性がある場合は、それが null であるかどうかを確認し、適切なものを出力してください。

null 許容の DateTime に対して機能する拡張メソッドを作成し、値が null の場合は適切なものを出力し、それ以外の場合はフォーマットが適用された DateTime を適用します。

    public static IHtmlString DateFormatted(this HtmlHelper htmlHelper, DateTime? dateTime, string format = "MM/dd/yyyy HH:mm")
    {
        string formatted = dateTime.HasValue ? dateTime.Value.ToString(format) : ("(null)");

        return new HtmlString(formatted);
    }

このような拡張メソッドを使用します

<td>@Html.DateFormatted(Model.Created)</td>
于 2012-07-23T15:19:51.997 に答える
0
@Model.Created.HasValue? Model.Created.Value.ToString("M/d/yyyy H:mm") : "Not Created"
于 2012-07-23T15:21:00.940 に答える
0

これを複数回またはグローバルに行う必要がある場合は、Shared/DisplayTemplates フォルダーに DateTime.cshtml テンプレートを作成し、他の回答に示されている書式文字列を含めることができます。例えば:

@model System.DateTime?
@(Model.HasValue ? Model.Value.ToString("M/d/yyyy H:mm") : "Undefined")

そして、あなたはそれを呼び出すでしょう:

@Html.DisplayFor(m => m.Created) 

これにより、必要な場所で指定する必要がなくなります。これにより、すべての日付のデフォルト形式が変更されます。それをしたくない場合は、必要に応じて 1 か所で変更できるように、2 回以上しか使用しない場合でも、テンプレートを使用する価値があるでしょう。その場合、テンプレート名を「ShortDateTime」などに変更し、次のように呼び出します。

@Html.DisplayFor(m => m.Created, "ShortDateTime") 
于 2012-07-23T16:26:49.823 に答える