SPListItem.GetFormattedValue dường như có một hành vi lạ đối với các trường DateTime. Nó truy xuất giá trị DateTime thông qua chỉ mục của SPListItem, theo đó MSDN article trả lại thời gian địa phương này. Dưới đây là một đoạn trích từ ReflectorMOSS 2007: SPListItem.GetFormattedValue cho các trường DateTime có lỗi?
public string GetFormattedValue(string fieldName)
{
SPField field = this.Fields.GetField(fieldName);
if (field != null)
{
return field.GetFieldValueAsHtml(this[fieldName]);
}
return null;
}
Vì vậy, nó sử dụng indexer SPListItem của để lấy giá trị và hơn SPFields.GetFieldValueAsHtml để định dạng giá trị. GetFieldValueAsHtml dường như giả sử ngày tháng là UTC và chuyển đổi nó thành giờ địa phương cho dù nó là loại nào. (Reflector cho thấy rằng nó sử dụng GetFieldValueAsText mà sử dụng value.ToString() nhưng đối với một số lý do nó giả định thời gian để được UTC.)
Kết quả cuối cùng là biểu diễn chuỗi trên một trường thời gian thu được trough listItem.GetFormattedValue() (ít nhất là trong trường hợp của tôi) là không chính xác, là giờ địa phương + (giờ địa phương - UTC).
Có ai gặp vấn đề tương tự với SPListItem.GetFormattedValue() và cách giải quyết của bạn là gì?
Bạn có muốn biết liệu có ai khác đã gặp nó hoặc cũng là những gì họ đã làm để vượt qua không? –
Both :) Mặc dù có một cách giải quyết rõ ràng. – axk