2017-10-15 19 views
-5

DateTimeを文字列 "dd/mm/yyyy"に変換するにはどうすればよいですか? 私が持っている問題は、変換がlinq式の中にあるので、私はDateTime.Value.ToString("MM/dd/yyyy")を使わなければならないということです。しかし、その日付は時間とともに戻ってくる。1/21/1999 12:00:00 AM。このクエリで時間部分を直接削除するにはどうすればよいですか?DateTimeを日付文字列に変換する "dd/mm/yyyy"

_unitOfWork.PlacementFinancialViewRepository.GetEfs07Placements() 
    .Where(x => x.FiscalYear == fiscalYear && x.ResponsibleSauId == responsibleDistrictId) 
    .ToList() 
    .Select(x => new Efs07PlacementModel 
    { 
    PlacementStartDate = x.PlacementStartDate == null 
     ? null 
     : x.PlacementStartDate.Value.ToString("MM/dd/yyyy"), 
    PlacementEndDate = x.PlacementEndDate == null 
     ? null 
     : x.PlacementEndDate.Value.ToString("MM/dd/yyyy") 
    }) 
    .ToList(); 
+0

、 'PlacementStartDate'のデータ型は – shahsani

+0

はい、それはですが、どのようにそれを変換することができる理由DateTime'はthatsの'かもしれ?私はちょうどdbのデータ型を変更することができると思います... – navig8tr

+2

日付を表示しているときに "MM/dd/yyyy"に変換することができます - リストを作成している間はそこにはありません – shahsani

答えて

0

リストの作成はそのままで、必要な形式には変換しないでください。そして、あなたはヨーヨービュー/ UI上に表示uare時に、あなたの必要な形式に変換することができますPlacementStartDate

_unitOfWork.PlacementFinancialViewRepository.GetEfs07Placements().Where(x => x.FiscalYear == fiscalYear && x.ResponsibleSauId == responsibleDistrictId) 
.ToList() 
.Select(x => new Efs07PlacementModel 
{ 
    PlacementStartDate = x.PlacementStartDate == null ? null : x.PlacementStartDate, 
    PlacementEndDate = x.PlacementEndDate == null ? null : x.PlacementEndDate 
}).ToList(); 

:ようにあなたのコードを使用することができます。

+0

可能であれば、このクエリでそれをやりたいと思います。 – navig8tr

+0

'Efs07PlacementModel'に' DisplayAs'属性を必要な形式に設定するためにいくつかの 'Annotations'を使用することができます。 – shahsani

0

DateTimeオブジェクトは、0001年1月1日午前0時から経過したミリ秒のカウントです。あなたは実際には数字を鳴らして、自動的にそれをDateTime(本質的に)にキャストしています。データベースで曜日が保存されていて時間は保存されていない場合は、ミリ秒が0に設定されます。これは、時刻を表すミリ秒を単に追加していないためです。

他の人の言われているように、時間を無視したり、常に夜中に設定したりすることができます。次に、ディスプレイにフォーマットを設定します。

System.ComponentModel.DataAnnotationsというモデルオブジェクトでこれを行うことをお勧めします。

[DisplayFormat(DataFormatString = "{0:dd/mm/yyyy}", ApplyFormatInEditMode = true)] 

あなたのビューで@Html.DisplayFor(x => x.DateTimeObject)を使用することができますし、それはあなたの書式を設定しますこの方法です。

更新:

また、あなたのオブジェクトモデルで属性[DataType(DataType.Date)]を追加することができます。これにより、データがEF6によってデータベースに格納される方法は変わりません。デフォルトでどのように表示されるかだけです。他の一部のORMはこのように動作しない可能性がありますので、ORMでお読みください。あなたのDBで

[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)] 
[DataType(DataType.Date)] 
public DateTime PlacementStartDate { get; set; } 
関連する問題