我有一个日期值,我想从中删除时间。我希望返回类型是一个日期类型,因为我想订购我的日期列表。具有表示日期的字符串的列表不会返回正确的顺序。 我知道DateTime总是返回带有时间的日期。我有什么选择?如何更好地使用代码并在没有时间的情况下获得日期类型的项目列表?
编辑:我想只有日期。之后没什么。像2016年8月7日不是8/7/2016 00:00:00或日期后的任何东西。并在日期对象中。
这是我的代码:
using (var db = new MyModel.Context())
{
var cert = (
from tr in db.uspTranscripts(personId)
from a in db.PersonTranscripts.Where(x => x.UPID == personId)
from b in db.LU_CreditType.Where(x => x.ID == a.CreditTypeID)
select new CertViewModel
{
ActivityTitle = tr.ActivityTitle,
Score = tr.Score,
Status = tr.Status,
CompletionDate = tr.CompletionDate,
CretitTypeName = b.ShortName,
CompletedDateSorted = a.HK_CreatedOn
}).OrderByDescending(x => x.CompletedDateSorted).ToList();
List<CertViewModel> certlist = cert;
foreach (var item in certlist)
{
string itemWithoutHour = item.CompletionDate.Value.ToShortDateString();
var itemConverted = DateTime.ParseExact(itemWithoutHour, "M/d/yyyy", null);
item.CompletionDate = itemConverted;
}
return certificateslist.GroupBy(x => x.ActivityTitle).Select(e => e.First()).ToList();
}
答案 0 :(得分:2)
对于任何给定的DateTime
对象,您可以引用its Date
property去除时间值:
var withTime = DateTime.Now; // 8/7/2016 22:11:43
var withoutTime = withTime.Date; // 8/7/2016 00:00:00
答案 1 :(得分:0)
.NET框架没有仅限日期的对象。
值得了解DateTime
结构的工作原理。在内部,它在一个64位无符号整数中存储自1/01/0001 12:00 am以来的刻度(1 tick = 100纳秒)的偏移量。 (1 tick = 100纳秒)
DateTime
结构提供了许多有用的方法和属性来处理日期和时间,例如向现有日期添加几天或计算两次的差异。一个有用的属性是Date
,它将DateTime
对象舍入到最近的一天(凌晨12:00)。
日期,时间和日期与时间都非常相似,主要区别在于您如何格式化它们,以及省略时间只是日期的日期。
David建议您在内部使用DateTime
结构,使用Date
属性进行删除,对DateTime
进行排序,比较它们并将其修改为{{ 1}}对象。
仅在需要显示时将其转换为DateTime
,此时您可以使用string
或ToShortDateString()
等方法仅显示日期。