【问题标题】:How to truncate time part from date in linq query?如何在 linq 查询中从日期截断时间部分?
【发布时间】:2017-10-10 06:39:11
【问题描述】:

您好我正在尝试编写 linq 查询以从 Sql 表中获取一些详细信息。我已经创建了列并存储了日期和时间。返回时我想省略时间部分。我可以知道这可能吗?

  List<returnObject> obj = new List<returnObject>();
obj = (from c in objectDB.NCT_Project
  join user in objectDB.NCT_UserRegistration on c.adminUserId equals user.User_Id
  where c.adminUserId == userId
                       select new returnObject
                       {
                           id = c.project_Id,
                           key = c.key,
                           created = c.createdDate //currently returns datetime
                       }).ToList(); 

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 如果您希望它保留为 DateTime 对象,则不能。如果您只想显示它并且只想要日期,请执行 .ToString(dd-MM-yyyy)(输入日期格式 - msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx
  • Protip:不要触摸DateTime 对象。如果您只关心日期值,则只使用对象的日期属性。如果你开始不必要地截断数据,你以后会遇到麻烦。
  • 你能把你的returnObject上的内容贴出来吗?
  • 谢谢。我的返回对象包含 public Nullable created { get;放; }
  • 如果你想在你的created属性中只有一个日期值,你可以只使用`.ToString("MM/dd/yyyy");请参阅此链接以供参考。 msdn.microsoft.com/en-us/library/zdtaw1bw(v=vs.110).aspx

标签: c# linq asp.net-mvc-5


【解决方案1】:

使用DbFunctions.TruncateTime方法:

created = DbFunctions.TruncateTime(c.createdDate)

根据文档:

当用作 LINQ to Entities 查询的一部分时,此方法调用 规范 TruncateTime EDM 函数返回给定的日期与 时间部分已清除。

【讨论】:

  • 有没有办法只截断秒/毫秒?
【解决方案2】:

您需要做的就是在 createdDate 上调用“日期”属性。

select new returnObject
                       {
                           id = c.project_Id,
                           key = c.key,
                           created = c.createdDate.Date
                       }).ToList(); 

【讨论】:

  • .ToString() 你创建的那个“日期”。它包含时间
  • 谢谢。 .Date 选项没有出现。
  • @NiranjanGodbole “不来”是什么意思?
  • @NiranjanGodbole 你的数据库 createdDate 列是字符串还是日期时间数据类型?
  • sql 数据库中的日期时间。谢谢
【解决方案3】:

你可以试试这个。

 created = c.createdDate.ToString("HH:mm")
 created = c.createdDate.ToString("H:mm") 
 created = c.createdDate.ToString("hh:mm tt") 
 created = c.createdDate.ToString("h:mm tt")

也看到这个问题:How to get only time from date-time C#

【讨论】:

  • 使用 ToString 的问题是,您必须在需要其他格式或排序功能时立即重新解析它...您应该尽可能长地保留 DateTime 或 TimeSpan 实例,并在 UI 中将其“ToString”层...
  • 是的,你是对的......不是我认为的最佳方法......我会尝试找到更好的解决方案......嗯谢谢@Divisadero
  • 在 DateTime 上有一个 TimeOfDay 属性,它是 TimeSpan 类型。似乎足够了。但是关于从数据库中读取,DbFunctions 似乎是最佳实践。
  • 是的,你是对的.. 让我们投票给 @SomeUser 的答案。来自文档的基础。 msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 1970-01-01
  • 2015-12-12
  • 2013-03-14
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 2010-10-29
相关资源
最近更新 更多