将2012-06-28T14:30:00-04:00转换为C#中的yyyyMMddTHHmm格式

时间:2012-06-25 15:34:59

标签: c# datetime timezone iso8601

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

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

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

请注意,应该谨慎地将值从绝对ISO8601格式更改为本地ISO8601格式,因为它会更改值的含义,并且通常会自行估值。

请确保您确实需要以下哪个选项(并相应调整代码):

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

或许你正在寻找其他的东西。

答案 2 :(得分:0)

我不确定这是你正在尝试的格式

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

这将为您提供2012-06-29T00:00:00.0000000+05:30