【发布时间】:2018-11-24 09:40:22
【问题描述】:
我很难理解 UTC 的工作原理。
我必须执行以下操作,但如果我能得到正确的结果,我仍然感到困惑。
目标:
- 确保数据库中所有保存的日期均为 UTC 格式
- 更新 DefaultTimezone 为马尼拉时间
- 确保所有返回的日期都在马尼拉时间
所以代码是:
public ConvertDate(DateTime? dateTime)
{
if (dateTime != null)
{
Value = (DateTime)dateTime;
TimeZone = GetFromConfig.DefaultTimeZone();
}
}
public ConvertDate(DateTime? dateTime, int GMTTimeZone)
{
if (dateTime != null)
{
Value = (DateTime)dateTime;
TimeZone = GMTTimeZone;
}
}
public int TimeZone
{
get { return m_TimeZone; }
set { m_TimeZone = value; }
}
DateTime m_Value;
public DateTime Value
{
get { return m_Value; }
set
{
m_Value = value;
DateTime converted = m_Value.ToUniversalTime().ToLocalTime();
}
}
示例用法:
DateTime SampleInputFromUser = new DateTime(2012, 1, 22);
ConvertDate newConversion = new ConvertDate(SampleInputFromUser, 21);
DateTime answer = newConversion.Value;
现在我对“时区”感到困惑。我不知道如何使用它来获得目标。
希望您理解我的问题并有想法完成目标。
编辑
根据@raveturned 的回答,我得到以下代码:
***在 ConvertDate 方法中添加
TimeZoneInfo timeInfo = TimeZoneInfo.FindSystemTimeZoneById(GetFromConfig.ManilaTimeZoneKey());
ManilaTime = TimeZoneInfo.ConvertTime(dateTime.Value, TimeZoneInfo.Local, timeInfo).ToUniversalTime();
**新属性
DateTime _ManilaTime;
public DateTime ManilaTime
{
get { return _ManilaTime; }
set { _ManilaTime = value; }
}
【问题讨论】: