[英]Convert date format of string to datetime MM/dd/yyyy when system date formate is dd/MM/yyyy
[英]Convert DateTime to Date string "dd/mm/yyyy"
如何將 DateTime 轉換為字符串“dd/mm/yyyy”? 我遇到的問題是,由於轉換在 linq 表達式中,我必須使用DateTime.Value.ToString("MM/dd/yyyy")
。 但是,日期會隨着時間不斷返回 - 1/21/1999 12:00:00 AM
。 如何直接在此查詢中刪除時間部分?
_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();
您可以按原樣保留列表創建,無需轉換為所需格式。 所以你可以使用你的代碼:
_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();
然后,您可以將PlacementStartDate
轉換為您在視圖/UI 上顯示時所需的格式。
DateTime 對象是自公元 0001 年 1 月 1 日午夜以來經過的毫秒計數。 您實際上是在對一個數字進行奇怪的處理並自動將其轉換為 DateTime(本質上)。 如果您的數據庫一直在保存日期而不是時間,則會導致這些毫秒被設置為 0。這是因為您只是沒有添加代表一天中的時間的毫秒。
正如其他人所說,您可以忽略時間或確保它始終設置為午夜。 然后在您的顯示器中設置格式。
我建議使用System.ComponentModel.DataAnnotations
在您的模型對象中執行此操作。
[DisplayFormat(DataFormatString = "{0:dd/mm/yyyy}", ApplyFormatInEditMode = true)]
這樣您就可以在視圖中使用@Html.DisplayFor(x => x.DateTimeObject)
並設置格式。
更新:
此外,您可以在對象模型中添加屬性[DataType(DataType.Date)]
。 這不會改變 EF6 數據在數據庫中的存儲方式,只是默認情況下的顯示方式。 其他一些 ORM 可能不會以這種方式運行,因此請仔細閱讀您的 ORM。
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
[DataType(DataType.Date)]
public DateTime PlacementStartDate { get; set; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.