我有一个帖子列表,其中帖子的“DateAdded”字段已设置为UTC时间。 我需要过滤特定月/年的帖子。 我正在努力的部分是如何将当前用户的时区(包括夏令时)纳入帐户。

这是需要考虑的变量:

List<Post> posts = ...;
TimeZoneInfo userTimeZone = ...;
int year = ...;
int month = ...;

如果有人能告诉我正确的方法,我会很感激。 谢谢

===============>>#1 票数:1

为什么不使用C#的DateTime类? 它应该为你处理这一切,它有一个比较功能?

http://msdn.microsoft.com/en-us/library/system.datetime.compare.aspx

它具有多种结构,具体取决于您知道时间的准确度。

您可以使用LINQ来过滤List

编辑:用于时区转换http://msdn.microsoft.com/en-us/library/bb397769.aspx

===============>>#2 票数:1 已采纳

您只需将查询的DateTime值转换为UTC,然后对其进行过滤。

// here are some posts
List<Post> posts = new List<Post>
{
    new Post {DateAdded = new DateTime(2013, 1, 1, 0, 0, 0, DateTimeKind.Utc)},
    new Post {DateAdded = new DateTime(2013, 2, 1, 0, 0, 0, DateTimeKind.Utc)},
    new Post {DateAdded = new DateTime(2013, 2, 2, 0, 0, 0, DateTimeKind.Utc)},
    new Post {DateAdded = new DateTime(2013, 3, 1, 0, 0, 0, DateTimeKind.Utc)},
    new Post {DateAdded = new DateTime(2013, 3, 2, 0, 0, 0, DateTimeKind.Utc)},
    new Post {DateAdded = new DateTime(2013, 3, 3, 0, 0, 0, DateTimeKind.Utc)},
};

// And the parameters you requested
TimeZoneInfo userTimeZone = TimeZoneInfo
                                .FindSystemTimeZoneById("Central Standard Time");
int year = 2013;
int month = 2;

// Let's get the start and end values in UTC.
DateTime startDate = new DateTime(year, month, 1);
DateTime startDateUtc = TimeZoneInfo.ConvertTimeToUtc(startDate, userTimeZone);
DateTime endDate = startDate.AddMonths(1);
DateTime endDateUtc = TimeZoneInfo.ConvertTimeToUtc(endDate, userTimeZone);

// Filter the posts to those values.  Uses an inclusive start and exclusive end.
var filteredPosts = posts.Where(x => x.DateAdded >= startDateUtc &&
                                     x.DateAdded < endDateUtc);

  ask by nfplee translate from so

未解决问题?本站智能推荐:

2回复

将一个时区中存储的日期/时间转换为用户的本地日期/时间

我正在处理一个数据库,其中使用Web服务器的本地日期/时间(在这种情况下为东部时间)错误地存储了所有日期。假设数据库中保留的所有日期/时间都是东部时间,如何将这个日期转换为将数据选择到C#模型中后,用户的本地时间是多少?
2回复

时区的日期时间

在C#中 DateTime.Now.Day DateTime.Now.Date.Day =>实际差异是多少? 例如,当我在PST区域时,请说8 PM-08/26,当我打电话时 例如,当我在美国东部标准时间区时,请说8 PM-08/26,当我打电话时 我想从日期
2回复

如何比较DateTime值,考虑到时区?

我有两个DateTime变量。 每个都有一个存储在变量中的时区,这样当包含zzz格式的I ToString ,我得到一个包含+01:00的字符串。 在设计时我不知道时区是什么,我期待变量彼此具有不同的时区。 我想比较两个DateTime值,以便我知道哪个更新。 例如,如果变量
2回复

当用户处于不同时区时,如何阻止日期/时间比较失败?

我正在获取可执行文件的“ LastWriteTime”,并将其与我设置的内部DateTime进行比较。 如果LastWriteTime小于或等于内部DateTime,那么我将从数据库中清除两个表。 该代码对我在太平洋时区非常有用。 但是,如果用户在另一个时区(例如,比我早4个小时),则
1回复

如何根据时区显示日期时间?

现在是墨尔本时间5:30 PM。 在洛杉矶,时间是12:30 AM。 此时将创建一个数据库记录。 它具有一个“ creation_datetime”时间戳。 当墨尔本的客户查看时间戳时,我想显示“ 2016-07-04 17:30(UTC + 10:00) ”。 当洛杉矶的客户
2回复

考虑日光,计算不同时区中两个不同时间之间的时差

考虑一下我有两次针对不同国家的情况: 问题1:如何将这些时间准确地转换to Utc ? 我想提到的是,日光节约不是固定的信息,可能会随时间和国家/地区而变化。 例如,由于某些政治原因,2010年伊朗没有节假日。 问题2:是否有一些可信任的地方或Web服务提供此信息?
2回复

c#将字符串(没有时区)解析为DateTime,将DST考虑在内

我读过很多SO文章,但我似乎无法找到问题的好答案。 发布的建议包括将日期转换为字符串和从字符串转换多次的函数,在结尾处连接位并且它们似乎只是......凌乱 所以问题: 我们在世界各地都有服务器。 所有服务器都在其自己的本地时间运行,并使用服务器本地的时间条目保留日志。 有些服
1回复

根据每个用户时区的UTC进行时区更改计算

我们在db中有一个名为Record的表,其中有一些提示。 它在下面的列中 下一行代表记录的一行, 用户可以从任何时区提交记录。 作为最佳做法的一部分,我们将DateTime保存在UTC中。 因此,根据用户时区,我们将日期时间转换为UTC并将其保存在表中。 现在,我必须
2回复

C#定义另一个时区中日期的开始

我想使用.NET / C#在另一个时区中定义一天的开始。 示例:我当前的时区= GMT + 1,因此DateTime.Today返回19/11/2009 23:00 UTC 但实际上我想获取格林尼治标准时间+2的DateTime.Today,该时间将为19/11/2009 22:00
2回复

如何解析日期和时间取决于时区?

我想将字符串解析为时间。 在印度时间( UTC +5.30 )工作正常。 但是当我在模拟器的设置中将时区更改为UTC -5时,输出显示 当我更改设置中的时区时,日期应该相同。 请帮助我解决我的问题。