我写了一段代码,它基本上从PST时区中的数据库中提取事务。我想要做的只是将这些日期转换为CEST时区和IST(以色列标准时间)。在C#中转换时区
我不喜欢的东西如下:
var transactions = ctx.UserStores.Where(x => x.UserId == loggedUser.UserId).SelectMany(x => x.StoreItems.SelectMany(y => y.StoreItemTransactions)).ToList();
var hourlyData = transactions
.GroupBy(x => TimeZoneInfo.ConvertTime(x.TransactionDate.Value, TimeZoneInfo.FindSystemTimeZoneById(timeZone)).Hour)
.Select(pr => new HourlyGraph { Hour = pr.Key, Sales = pr.Sum(x => x.QuantitySoldTransaction) })
.ToList();
其中的timeZone参数可以是下列之一:
Central European Standard Time
Israel Standard Time
Pacific Standard Time
Naurally时的timeZone参数= PST我希望在我的名单相同的结果。 ..但奇怪的是结果得到完全洗牌,我不知道为什么...
因此,我的数据库中的日期保存在PST时区,我试图conv ert他们到以上3个时区之一...
我在做什么错在这里?
什么是x.TransactionDate.Value.Kind'的'的价值,什么时区中运行的代码?你有没有尝试过使用'TimeZoneInfo.ConvertTime()'这个版本,它希望两个'TimeZoneInformation'对象(源和目标) – NineBerry
“结果完全被打乱” - 这是什么意思?我不清楚你的问题是什么。结果是错误的顺序(是我所假设的洗牌)?时间不对?还有别的吗?如果你能给出一个最小的问题的完整例子,那么这将有很大的帮助。 – Chris
@NineBerry它说日期时间kind = System.DateTimeKind.Unspecified – User987