【发布时间】:2013-07-30 14:06:50
【问题描述】:
我有以下代码:
protected void Page_Load(object sender, EventArgs e)
{
DateTime dt = ConvertFromUtc(DateTime.Now);
}
public DateTime ConvertFromUtc(DateTime dt)
{
var tz = TimeZoneInfo.FindSystemTimeZoneById(Session["Timezone"].ToString());
return TimeZoneInfo.ConvertTimeFromUtc(dt, tz);
}
我收到以下消息:
转换无法完成,因为提供的 DateTime 没有正确设置 Kind 属性。例如,当 Kind 属性为 DateTimeKind.Local,源时区必须为 时区信息.本地。参数名称:sourceTimeZone。
我尝试添加以下内容,但没有帮助:
DateTime dateTimeToConvert = new DateTime(dt, DateTimeKind.Unspecified);
【问题讨论】:
-
该代码没有意义。如果您想要当前当地时间,请获取
DateTime.Now。如果您想要当前的 UTC 时间,请获取DateTime.UtcNow。但是从 UTC 转换本地时间是……没有意义的。您收到错误是因为DateTime.Now不是 UTC 时间。 -
还可以查看 DateTime 对象的 ToUniversalTime() 和 ToLocalTime() 函数。
-
给 .NET 设计师买一支雪茄,让你远离麻烦。
标签: c# datetime-format