Chạy asp.net mvc 2 trên win 7 với .net 4.0TimeZoneInfo.ConvertTime không chuyển đổi bất cứ điều gì
Tôi có một phương thức hành động điều khiển nhận 2 đối tượng DateTime từ biểu mẫu. Giao diện người dùng trên biểu mẫu sử dụng trình ghi ngày tháng jQueryUi (không chắc chắn nếu trình theo dõi đó).
Người dùng điền vào biểu mẫu đó sẽ luôn nhập ngày/giờ trong múi giờ Hawaii.
Tôi muốn chuyển đổi thành thời gian UTC và lưu trữ nó trong cơ sở dữ liệu.
Khi tôi gọi TimeZoneInfo.ConverTime (DateTime, TimeZoneInfo, TimeZoneInfo), nó trả về cùng một ngày giờ chính xác khi tôi chuyển vào nó mà không thực hiện bất kỳ chuyển đổi nào. Tôi đã kiểm tra trình gỡ lỗi và điều duy nhất thay đổi là nó đã thay đổi thuộc tính DateTime.Kind thành DateTimeKind.Utc.
public ActionResult New(ScheduleNew data){
TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time");
DateTime start = TimeZoneInfo.ConvertTime(data.StartDate, tz, TimeZoneInfo.Utc);
DateTime end = TimeZoneInfo.ConvertTime(data.EndDate, tz, TimeZoneInfo.Utc);
}
Tôi đã thử phiên bản thay thế với cùng kết quả.
public ActionResult New(ScheduleNew data){
DateTime start = new DateTime(data.StartDate.Year, data.StartDate.Month, data.StartDate.Day, data.StartDate.Hour, data.StartDate.Minute, data.StartDate.Second, DateTimeKind.Unspecified);
DateTime end = new DateTime(data.EndDate.Year, data.EndDate.Month, data.EndDate.Day, data.EndDate.Hour, data.EndDate.Minute, data.EndDate.Second, DateTimeKind.Unspecified);
TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time");
StartDate = TimeZoneInfo.ConvertTime(start, tz, TimeZoneInfo.Utc);
EndDate = TimeZoneInfo.ConvertTime(end, tz, TimeZoneInfo.Utc),
}
ScheduleData chỉ là lớp ViewModel đơn giản có hai ngày Giờ được gọi là StartDate và EndDate.
Tôi muốn nhấn mạnh, tôi không quan tâm vị trí của máy chủ, tôi không quan tâm vị trí của người dùng. Người dùng sẽ luôn nhập thời gian trong múi giờ Hawaii và máy chủ phải luôn chuyển đổi ngày giờ đó thành UTC.
Về cơ bản những gì tôi muốn, là thêm 10 giờ vào thời điểm người dùng nhập (tiếng Hawaii sang utc) và tôi có thể đạt được điều đó bằng cách gọi .AddHours (10) và điều đó sẽ ổn. Nhưng sau đó trên con đường tôi sẽ cần ứng dụng này linh hoạt hơn.
bạn có khắc phục được sự cố không? – Rory
Loại dữ liệu.StartDate là gì? – Rory