我正在使用c#Web API,我有一个如下所示的类,它具有以下定义的属性。我的Get / Post用户信息调用中使用了同一个类。基本上,当我们将值存储在数据库中时,我们以UTC格式的形式存储datetime字段,当我们从数据库中检索它时,我们将以用户特定时区的形式表示值。
public class UserInfo
{
private string _userHashId;
public string UserHashId
{
get
{
return _userHashId;
}
set
{
// This property has been set after set the value of "RegistrationDate"
_userHashId = value;
}
}
public string TimeZone { get; set; }
public string _registrationDate;
public string RegistrationDate
{
get
{
return _registrationDate;
}
set
{
_registrationDate = value;
if (string.IsNullOrWhiteSpace(TimeZone))
{
// When this property's set method called "UserHashId" value is not available
// and because of that TimeZone data is not available
TimeZone = Helper.FindTimeZoneByUserHashId(UserHashId);
}
// User Timezone to UTC Timezone
_registrationDateUTC = _registrationDate.ToUtcTimeZone(TimeZone);
}
}
public DateTime _registrationDateUTC;
public DateTime RegistrationDateUTC
{
get
{
return _registrationDateUTC;
}
set
{
_registrationDateUTC = value;
// UTC Timezone to User Timezone
_registrationDate = _registrationDateUTC.ToUserTimezone(TimeZone);
}
}
}
在Get API调用中,使用正确的时区信息正确显示用户信息。但是,当用户使Post请求日期时间对话不能按预期工作时,因为我必须在将实际时间转换为UTC时间之前找出基于UserHashId的时区信息,并且我没有在“RegistrationDate”的set block中获得“UserHashId”值因为它还没有确定。