如何在Linq中使用DateAdd函数?

时间:2013-04-03 20:01:36

标签: asp.net linq dateadd

我有一个用户可以发布的事件和相关评论可以为每个事件添加,虽然我有我的数据库引擎驻留在我们的服务器但我住在东欧(Cy)我们有7-8小时时差。我正在使用事件和注释的Linq匿名类型,所以我想知道如何使用DateAdd函数来纠正评论日期时间的时差。

以下是我的linq表达式的示例;

var myEvents = from a in myEntities.AddEvents
               where a.Authorized == true
               orderby a.Id descending
               select new
               {
                   a.Id,
                   a.VenueName,
                   a.EventType,
                   a.Date,
                   a.StartTime,
                   a.EndTime,
                   a.Address,
                   a.Phone,
                   a.Reviews (This is for "Comments" and where i stuck!)
               };

任何想法都赞赏!感谢

4 个答案:

答案 0 :(得分:0)

您可以使用DateTime.AddHours例如

var myEvents = from a in myEntities.AddEvents
               ...
               select new
               {
                   ...
                   Date = a.Date.AddHours(7),
                   ...
               };

类似的方法可用于添加daysmonthsyearsminutessecondsmilliseconds

但是,对于实体框架,您需要使用EntityFunctions.AddHours或它的盟友。

答案 1 :(得分:0)

插入事件和注释时使用TimeZoneInfo.ConvertTime,例如

DateTime CommentDate = TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.FindSystemTimeZoneById("Arabic Standard Time")); 

请检查以下链接如何使用TimeZoneInfo.ConvertTime

http://www.xiirus.net/articles/article-_net-convert-datetime-from-one-timezone-to-another-7e44y.aspx

答案 2 :(得分:0)

问题现已解决,非常感谢!当我使用addHours函数修改受影响的列时,我基本上使用了foreach循环。这一切都正常工作。以下解决方案都不适用,但非常感谢!

答案 3 :(得分:0)

以下是Linq中DateAdd的语法:

DateTime.Now.AddMonths(YourInteger)
DateTime.Now.AddHours(YourInteger)

......等等。使用它的最好方法是创建一个新变量,否则会遇到错误。

DateTime yourDate = DateTime.Now.AddMonths(6);

在此之后,您可以使用您创建的变量来验证Linq中的数据。

如果你这样做:

new entityStuff{
    field = o.date >= DateTime.Now.AddMonths(X) //months, days... you have other methods besides this one!
}

您将遇到错误。

你应该这样做,至少和我一起工作!

new entityStuff{
    field = o.date >= yourDate
}

希望它能帮助你,它帮助了我=)