[英]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.