私のC#コードでは、次のデータ型を持っています
public DateTime? Created { get; set; }
私のかみそりのコードでは、これは次のように出力されます。
<td>@Model.Created</td>
5/23/2012 1:26:39 PM
フォーマットを次のように変更したいと思います。
5/23/2012 13:26
誰かが私にこれを行う方法を教えてくれますか?
私のC#コードでは、次のデータ型を持っています
public DateTime? Created { get; set; }
私のかみそりのコードでは、これは次のように出力されます。
<td>@Model.Created</td>
5/23/2012 1:26:39 PM
フォーマットを次のように変更したいと思います。
5/23/2012 13:26
誰かが私にこれを行う方法を教えてくれますか?
toString メソッドを呼び出してマスクを渡す必要があります
<td>@Model.Created.toString("dd/MM/yyyy HH:mm")</td>
あなたは確かに使用することができます
@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>
@Model.Created.HasValue? Model.Created.Value.ToString("M/d/yyyy H:mm") : "Not Created"
これを複数回またはグローバルに行う必要がある場合は、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")