【问题标题】:DateTime.Now Duration +- 2 Hours?DateTime.Now 持续时间 +- 2 小时?
【发布时间】:2011-08-14 04:59:05
【问题描述】:

我正在尝试根据日期和时间 +- 2 小时显示 XML 列表。

我目前正在使用这种方法:

bool MyDateCheckingMethod(string dateString)
        {



            DateTime otherDate = DateTime.ParseExact(dateString, "yyyyMMddHHmmss K", null);
            // Is this today (Checking Date and Hour)
            return otherDate.Hour == DateTime.UtcNow.Hour &&
            otherDate.Date == DateTime.UtcNow.Date ;



        }

但我想更改它以在当前时间的 2 小时内从我的 XML 中选择列表。

我尝试了以下变体,但对 DateTime 了解不够,无法在此站点上找到任何相关问题,并且来自 MSDN 的 DateTime 也没有任何相关示例或信息。

bool MyDateCheckingMethod(string dateString)
        {


            DateTime now = DateTime.UtcNow;

            DateTime otherDate = DateTime.ParseExact(dateString, "yyyyMMddHHmmss K", null);
            // Is this today (Checking Date and Hour)
            return otherDate.Hour == DateTime.UtcNow.Hour &&
            otherDate.Date == DateTime.UtcNow.Date ;
            (otherDate - now).Duration <= TimeSpan.FromHours(2);



        }

【问题讨论】:

  • Yahia 的回答很好,您也可以简单地返回您提供的代码中最后一行的结果。它将给出相同的结果。然后可以读取代码:“现在和另一个日期时间之间的差异是两个小时还是更少?”而 Yahia 可以读作“日期时间是否比两小时前更近,并且比现在早两小时?”

标签: xml silverlight linq datetime


【解决方案1】:

使用这个

bool MyDateCheckingMethod(string dateString)
{
DateTime now = DateTime.UtcNow;
DateTime otherDate = DateTime.ParseExact(dateString, "yyyyMMddHHmmss K", null);

return ( now.AddHours (-2) <= otherDate && otherDate <= now.AddHours (2) );
}

【讨论】:

  • 天才,正是我所追求的,唯一的问题是我需要 Hour in Hour.UtcNow 并且 Date 是 Date.Now,因为 UTCnow 出于某种原因显示昨天的列表。
  • 不确定您的意思...也许您应该使用 DateTime.Now 而不是 DateTime.UtcNow
  • 我试过了,但如果我使用 DateTime.Now 它给了我 -12 小时。例如,下午 5 点从早上 5 点开始显示的列表
  • 另一个选项是DateTime now = DateTime.Now.Date.Add (DateTime.UtcNow.TimeOfDay); - 这给出了当前日期,但带有 UtcNow 的时间部分
  • @Merlyn:我同意你的看法……但似乎 Rhys 已经有了一些时区混淆的数据……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
  • 2017-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多