【问题标题】:c# ConvertFromUtc method - getting errorc# ConvertFromUtc 方法 - 出现错误
【发布时间】: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


【解决方案1】:

使用DateTime.UtcNow 而不是DateTime.Now

【讨论】:

  • 我正在尝试从 UTC 日期开始并尝试获取本地日期。
猜你喜欢
  • 2020-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 2017-11-04
相关资源
最近更新 更多