【问题标题】:Convert 2012-06-28T14:30:00-04:00 to yyyyMMddTHHmm format in C#在 C# 中将 2012-06-28T14:30:00-04:00 转换为 yyyyMMddTHHmm 格式
【发布时间】:2012-06-25 15:34:59
【问题描述】:

我想将 c# 中的日期(如 2012-06-28T14:30:00-04:00)转换为“yyyyMMddTHHmm”格式,两个日期都是字符串。

string currentDate="2012-06-28T14:30:00-04:00";
string requiredDate="yyyyMMddTHHmm"

当我尝试使用 Convert.ToDateTime() 转换此日期时,C# 返回“20120629T0000-04:00”,但这不是正确的日期。

【问题讨论】:

标签: c# datetime timezone iso8601


【解决方案1】:

查看Standard Date and Time Format Strings (MSDN)。我想在 DateTime 实例上仅使用 ToString() 方法可能就足够了。

您可能需要在转换方法的适当重载中指定CultureInfo (MSDN here)。服务器和客户端应用程序可能处于不同的文化和/或时区。

【讨论】:

    【解决方案2】:

    DateTime.Parse("2012-06-28T14:30:00-04:00").ToString("yyyyMMddTHHmm") 产生您可能想要的价值。

    请注意,将值从绝对 ISO8601 格式更改为本地 ISO8601 格式时应谨慎操作,因为它会更改值的含义,并且通常会更改值本身。

    请确定您真正需要以下哪个选项(并相应地调整代码):

    • 只需从值中删除时间。如果值来自不同的时区,将产生半随机时间。
    • 始终将值移动到给定时区并使其成为该时区的本地值。
    • 始终将值移动到当前时区并使其本地化到当前时区

    或者您可能正在寻找其他东西。

    【讨论】:

    • 不,亲爱的,我试过这个,但我得到 20120629T0000 ,这是一个错误的日期。我需要 20120628T1430 或 20120628T0230
    • @Ramesh,“错误的日期”不是一个很好的解释,特别是如果您提供 2 个不同的值作为“正确”。请阅读并评论我的回答“...以下您真正想要的选项”。
    【解决方案3】:

    我不确定这是您尝试的格式

    string currentDate="2012-06-28T14:30:00-04:00";
    DateTime.Parse(currentDate).ToString("o")
    

    这会给你2012-06-29T00:00:00.0000000+05:30

    【讨论】:

    • 谢谢,我已经试过了,但这不正确,因为我只需要 20120628T14:30 但它给了我 29,这是不正确的日期。
    猜你喜欢
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    相关资源
    最近更新 更多