【问题标题】:Convert datetime without timezone转换没有时区的日期时间
【发布时间】:2019-12-11 11:45:33
【问题描述】:

我在字符串中有日期:“2013-07-22T08:51:38.000-07:00”

当我try parse 这个字符串时,我收到带有时区偏移的日期。

如何在没有时区偏移的情况下做到这一点?

---更新---

我收到的是:DateTime.Parse("2013-07-22T08:51:38.000-07:00") = 7/22/2013 7:51:38 PM 但我需要接收7/22/2013 8:51:38 AM - 没有偏移的日期时间。

【问题讨论】:

  • “有偏移时区”是什么意思?请显示您的代码、您希望收到的内容以及您实际收到的内容。并考虑使用DateTimeOffset
  • 请在问题中查看我的更新

标签: c# parsing datetime timezone


【解决方案1】:

您可以使用 DateTimeOffset 的 DateTime 属性。

例子:

string s = "2013-07-22T08:51:38.000-07:00";
var dateTimeOffset =DateTimeOffset.Parse(s, null);
Console.WriteLine(dateTimeOffset.DateTime); 

输出:

22/07/2013 08:51:38

【讨论】:

  • 为此加一个!今天帮我修复了代码中的一个大错误!
  • 在调用 HTTP 处理程序之前有没有办法做到这一点?
【解决方案2】:

你可以试试这个。

DateTimeOffset.Parse("2013-07-22T08:51:38.000-07:00").DateTime.ToString("dd-MM-yyyy hh:mm:ss tt");

【讨论】:

    【解决方案3】:

    你可以试试下面这个

            string s = "2013-07-22T08:51:38.000-07:00";
    
            DateTime d = Convert.ToDateTime(s);
    
            Console.WriteLine(d.Date.ToShortDateString());
    

    【讨论】:

    • 如果是 2013-07-22T08:51:38.000 解析工作正常。
    • 但是 '2013-07-22T08:51:38.000-07:00' 确实会抵消时间。
    • 可以直接使用 DateTime 对象 Console.WriteLine(d);
    【解决方案4】:

    如果你有一个DateTime 对象,你可以使用它上面的Date 属性来接收日期。

    【讨论】:

    • 这不是一个好的答案,因为日期本身可能会被时区修改。
    猜你喜欢
    • 1970-01-01
    • 2016-08-29
    • 2019-11-18
    • 2015-07-15
    • 2011-04-16
    • 2021-01-05
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    相关资源
    最近更新 更多