在C#中转换时区



我编写了一个代码,该代码基本上是从我的DB中拉出PST时区的DB。我想做的就是只需将这些日期转换为CEST时区和ist(以色列标准时间)。

我做了以下操作:

  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();

时区参数可以是以下一个:

Central European Standard Time
Israel Standard Time
Pacific Standard Time

naurally当timezone参数为= pst时,我期望在我的列表中产生相同的结果...但是奇怪的是,结果完全被改组了,我不确定为什么...

所以我的DB中的日期保存在PST时区,我正在尝试将其转换为以上3个时区的一个...

我在这里做错了?

使用TimeZoneInfo.ConvertTime版本的示例代码,该版本期望源和目标时区。

DateTime sourceTime = new DateTime(2015, 6, 10, 10, 20, 30, DateTimeKind.Unspecified);
TimeZoneInfo sourceTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
foreach(var targetTimeZoneID in new string[] { "Pacific Standard Time", "Israel Standard Time", "Central European Standard Time" })
{
    TimeZoneInfo targetTimeZone = TimeZoneInfo.FindSystemTimeZoneById(targetTimeZoneID);
    var converted = TimeZoneInfo.ConvertTime(sourceTime, sourceTimeZone, targetTimeZone);
    Console.WriteLine("{0}: {1:yyyy-MM-dd HH:mm:ss}", targetTimeZoneID, converted);
}
Console.ReadLine();

输出是:

太平洋标准时间:2015-06-10 10:20:30
以色列标准时间: 2015-06-10 20:20:30
中欧标准时间:2015-06-10 19:20:30

相关内容

  • 没有找到相关文章

最新更新