首页 > 解决方案 > 如何将 Datetime.utcnow 转换为 DateTime,UTCtoLocal()?

问题描述

当转换utcnow为当地时间时,它会显示如下错误

“LINQ to Entities 无法识别 'System.DateTime ToLocalTime()' 方法,并且此方法无法转换为存储表达式。”

我使用的是SQL Server 2014而不是mango dbUTCtoLocal当我在查询之外使用该函数时,它将起作用。但我需要在linq 查询中使用它来加快执行速度。还有其他方法可以做到这一点。

group new
{
    Id = ord.Id,
    ShipmentInfoId = shipment.Id,
    PartnerName = partner.Name,
    PartNumber = ordItem.SellerProductID,
    OrderNumber = ord.UniqueOrderID,
    PartCount = shipment.PartCount,
    DeliveryDate = ord.DeliveryDate,
    IsSentInvoice = shipment.IsSentInvoice != null ? shipment.IsSentInvoice : false,
    IsSentASN = shipment.IsSentASN != null ? shipment.IsSentASN : false,
    ShippingPartCount = 0,
    IsManualEntered = ord.IsManualEntered,
    LastGeneratedInvoiceDate = shipment.LastGeneratedInvoiceDate.Value.UtcToLocal(),
    LastGeneratedASNDate = shipment.LastGeneratedASNDate.Value.UtcToLocal(),

标签: c#sqllinqdatetimelocalization

解决方案


通过玩你的 DateTimeKind.Utc 和 ToLocalTime() 来解决这里

var dt = new DateTime(2010, 1, 1, 1, 1, 1, DateTimeKind.Utc);
string s = dt.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss \"GMT\"zzz");
Console.WriteLine(s);

来源:日期时间字符串与时区


推荐阅读