Tôi đang gặp sự cố trong khi chuyển đổi ngày giữa máy chủ và ứng dụng khách của tôi, cả hai đều đang chạy ở Đức. Cài đặt vùng trên máy khách có thể được đặt thành cả Vương quốc Anh hoặc Đức. Tôi nhận được ngày từ máy chủ có định dạng CET và tôi cần đại diện cho thời gian này trên giao diện người dùng dưới dạng thời gian ở Vương quốc Anh. Ví dụ một thời gian nhận được từ máy chủ như nói, 01/07/2010 01:00:00 nên được đại diện trên giao diện người dùng như 01/07/2010 00:00:00. Tôi đã viết một công cụ chuyển đổi cho mục đích này, tuy nhiên trong khi chạy nó đang nhận được một sự khác biệt thời gian của 2 giờ.Below là mã, xin vui lòng bạn có thể giúp đỡ?Làm thế nào để đại diện cho thời gian hiện tại của Vương quốc Anh?
public class LocalToGmtConverter : IDateConverter
{
private readonly TimeZoneInfo timeZoneInfo;
public LocalToGmtConverter()
: this(TimeZoneInfo.Local)
{
}
public LocalToGmtConverter(TimeZoneInfo timeZoneInfo)
{
this.timeZoneInfo = timeZoneInfo;
}
public DateTime Convert(DateTime localDate)
{
var utcKind = DateTime.SpecifyKind(localDate, DateTimeKind.Utc);
return utcKind;
}
public DateTime ConvertBack(object fromServer)
{
DateTime serverDate = (DateTime)fromServer;
var utcOffset = timeZoneInfo.GetUtcOffset(serverDate);
var uiTime = serverDate- utcOffset;
return uiTime;
}
}
Bạn có nhận được giờ Đức hoặc GMT từ máy chủ không? – Oded
Câu hỏi liên quan: http: // stackoverflow.com/questions/2532729/daylight-saving-time-and-timezone-best-practices – Oded
Cách tiếp cận tốt hơn có cả thời gian trong UTC và chuyển đổi sang địa phương khi cần –