将时间跨度转换为日期时间

本文关键字:日期 时间 转换 时间跨度 | 更新日期: 2023-09-27 18:13:12

我的功能是:

public async Task<IHttpActionResult> RecentAddedTags(int daysago)
{
    TimeSpan duration = DateTime.UtcNow - DateTime.Today.AddDays(-daysago);
    DateTime days = DateTime.UtcNow - duration;
    var ret = from tag in db.Tags
    where tag.time.Equals(days)
    select new
    {
        postedById = tag.AspNetUser.Id,
        postedByName = tag.AspNetUser.UserName,
        name = tag.name,
        info = tag.info,
        time = tag.time,
        id = tag.Id,
    };
    return Ok(ret);
}

如果我调用函数作为RecentAddedTags(2),它应该返回2天前创建的所有标签。但是它给出了错误:

无法创建类型为"System.Object"的常数值。只有在此上下文中支持基本类型或枚举类型。

days对象存在一些问题。我做错了什么?

将时间跨度转换为日期时间

比较DateTime对象中的日期,它将为您工作

    var ret = from tag in db.Tags.ToList()
              where tag.time.Date == days.Date
              select new
              {
                    postedById = tag.AspNetUser.Id,
                    postedByName = tag.AspNetUser.UserName,
                    name = tag.name,
                    info = tag.info,
                    time = tag.time,
                    id = tag.Id,
              };

你需要改变

tag.time.Equals(days)

tag.time == days;

(不完全确定为什么可以)