"MM/dd/yyyy"のShortDateTime形式でフォーマットするデータを取得しようとしていますが、私が試みていることはすべて動作していません。Entity FrameworkでMVCで日付形式が機能していませんか?
私は以下のEFを持っています。私が特に見ているフィールドはExpireDateです。フィールドの周りにDateTime.Parseを使用しようとすると、エラーcannot convert from 'System.DateTime?" to 'string'
が発生します。 DateTime.Parseを指定しないと、日付は3/15/2017 12:00:00 AM
と表示されます。
モデルでデータアノテーションを使用してみましたが、どちらも機能していないようです。
提案がありますか?
EFクエリ
data = (from e in ctx.clock_emp_excep_hist
join g in ctx.clock_group on e.group_id equals g.group_id
join emp in ctx.employee on e.emp_id equals emp.emp_id
where e.group_id == 4
select new
{
UpdateDate = e.create_date,
UpdateType = e.add_delete_ind,
GroupId = e.group_id,
GroupName = g.group_name,
Reason = e.reason,
ExpireDate = e.expiration_date,
UpdateEmployeeId = e.emp_id,
UpdateFirstName = emp.emp_firstname,
UpdateLastName = emp.emp_lastname
}).Select(e => new EmployeeExceptionLog {
UpdateDate = e.UpdateDate,
UpdateType = e.UpdateType == "A" ? "Add" : "Delete",
GroupId = e.GroupId,
GroupName = e.GroupName,
Reason = e.Reason,
ExpireDate = DateTime.Parse(e.ExpireDate),
UpdateEmployeeId = e.UpdateEmployeeId,
UpdateFirstName = e.UpdateFirstName,
UpdateLastName = e.UpdateLastName
}).ToList();
}
プロパティクラスで
[DataType(DataType.DateTime)]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode=true)]
public DateTime? ExpireDate { get; set; }
さらに詳しい情報:
これは私がビュー内のデータを表示しています方法です。
@foreach (var item in Model.AuditLogs)
{
<tr class="@(item.UpdateType == "Delete" ? "danger" : "")">
<td>@item.UpdateDate</td>
<td>@item.UpdateType</td>
<td>@item.Reason</td>
<td>@item.ExpireDate</td>
<td>@item.UpdateEmployeeId - @item.UpdateFirstName @item.UpdateLastName</td>
</tr>
}
Oracle Databaseのデータ型は、DateTime?です。
:このにあなたのクエリを更新し
:フォーマットされた文字列にNULL可能日時を変換する 。通常Convert.xxxは動作します。私はそれをテストしていないが、私はConvert.ToStringを試すだろう –
データベースに文字列として日付を格納していますか? – mason
DateTimeにはフォーマットはありません**。これはバイナリ値です。 DateTime値は、文字列に変換されたとき、つまりビュー内でフォーマットされます。 –