tôi có một giải pháp của ba dự án:Chuyển đổi UTC tới giờ địa phương trả về kết quả kỳ lạ
- Lõi
- Outlook Add-In
- ASP.NET website
Cả, Outlook Add-In và trang web sử dụng các phương thức tương tự từ dự án Core để lấy dữ liệu từ SQL Server. Khi tôi ghi dữ liệu của tôi vào cơ sở dữ liệu, tôi chuyển đổi tất cả DateTime
giá trị của hai bảng vào thời gian tính theo giờ UTC:
POLL_START POLL_END
2013-07-31 12:00:00.000 2013-08-01 12:00:00.000
và
PICK_DATE
2013-07-31 12:00:48.000
2013-07-31 13:00:12.000
Khi tôi nhận được dữ liệu trong Outlook của tôi Add-In, đây là đúng kết quả:
Khi mở như nhau trong trang web của tôi, chọn cũng tốt:
Nhưng bắt đầu của tôi và kết thúc thời là "bị hỏng" - những bù đắp được thêm vào, Bute giờ sai được sử dụng:
Dưới đây là đoạn code để chuyển đổi của tôi, rằng cả hai, Outlook và các trang web, sử dụng:
private static void ConvertToLocalTime(POLL item)
{
item.POLL_START = item.POLL_START.FromUTC();
item.POLL_END = item.POLL_END.FromUTC();
}
private static void ConvertToLocalTime(PICK pick)
{
if (pick.PICK_DATE != null) pick.PICK_DATE = ((DateTime)pick.PICK_DATE).FromUTC();
}
Và việc triển khai DateTime.FromUtc()
:
public static DateTime FromUTC(this DateTime value)
{
var local = TimeZoneInfo.Local;
return TimeZoneInfo.ConvertTime(value, TimeZoneInfo.Utc, local);
}
Tôi có cùng kết quả với DateTime.ToLocalTime()
. Bất kỳ ai là một ý tưởng?
EDIT 1:
Đây là cách bắt đầu và kết thúc được hiển thị trên trang web (kết thúc với End
thay vì Start
):
var startCell = new TableCell
{
Text = String.Format(
@"<a href='{0}' title='{2}' target='_blank'>{1:dd.MM.yyyy HH:mm \U\T\Czzz}</a>",
Common.GetTimeAndDateHyperlink(_poll.Start, "Vote Start"),
_poll.Start,
ConvertToLocalTimeZone),
CssClass = "InfoContent"
};
Và chọn:
answerCell = new TableCell
{
Text = String.Format(
@"<a href='{0}' title='{2}' target='_blank'>{1}</a>",
Common.GetTimeAndDateHyperlink(ao.Time, ao.RealAnswer),
ao.RealAnswer,
ConvertToLocalTimeZone)
};
ao.RealAnswer
trả về chuỗi DateTime được định dạng:
return String.Format(WholeTime == true ? "{0:d}" : @"{0:dd.MM.yyyy HH:mm \U\T\Czzz}", Time);
Mã bạn đang sử dụng để hiển thị thời gian trên trang web của bạn là gì? – Romoku
@Romoku đã thêm mã – Herdo
Tôi sẽ đoán rằng thuộc tính [Loại] (http://msdn.microsoft.com/en-us/library/system.datetime.kind.aspx) khác nhau giữa hai loại. – Greg