如何从' M / d / yyyy h:mm:ss tt'转换日期字符串?到了&yyyy-dd-mmTHH:mm:ss'? C#

时间:2016-05-23 14:12:45

标签: c# date parsing datetime time

我的字符串看起来像5/27/2015 4:49:54 AM

我需要它采用以下格式:2015-27-05T04:49:54+08:00

我尝试过像这样转换它,但它会抛出一个错误:

var convertedDate = DateTime.ParseExact(originalDate, "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK",
                            new CultureInfo("en-US", true));

我也试过像这样转换它但它似乎没有做任何事情,convertedDate最终与originalDate相同:

var convertedDate = String.Format("{0:u}", originalDate);

5 个答案:

答案 0 :(得分:1)

首先将原始string解析为DateTime。然后将DateTime格式化为所需格式的string

var originalDate = "5/27/2015 4:49:54 AM";
var result = DateTime.ParseExact(originalDate, "M/d/yyyy h:mm:ss tt", CultureInfo.CurrentCulture)
    .ToString("yyyy'-'MM'-'dd'T'HH':'mm':'sszzzz");
Console.WriteLine(result);

输出

  

2015-05-27T04:49:54-04:00

请注意,您获得的时区偏移量取决于运行的计算机的文化,因为它未在原始字符串中指定。

答案 1 :(得分:1)

您需要先解析,然后使用ToString翻译所需的格式字符串。

试试这个:

string input = "5/27/2015 4:49:54 AM";
DateTime originalDate = DateTime.Parse(input);
string output = originalDate.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK");

如果需要,您可以将DateTime.Parse换成DateTime.ParseExactDateTime.Parse将尝试使用您的系统文化进行解析。如果您需要/想要,您可以更具体。

另外,请记住格式字符串中的f会创建必需的小数。要匹配您的规定输出,您应使用F或省略。

https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx

答案 2 :(得分:1)

试试这段代码。

string inputString = "05/27/2015 04:49:54 AM";

DateTime dt = DateTime.ParseExact(inputString, "M/dd/yyyy H:mm:ss tt",
System.Globalization.CultureInfo.InvariantCulture);

string outputString = dt.ToString("yyyy-MM-ddTHH:mm:sszzz");

输出字符串将返回值“2015-05-27T04:49:54 + 08:00”。

答案 3 :(得分:0)

尝试convertedDate.ToString("yyyy-MM-ddThh:mm:sszzz"),本地计算机上的日期和时间设置可能会影响输出的格式,因此您无法始终依赖内置格式字符串。

答案 4 :(得分:0)

要解析"5/27/2015 4:49:54 AM",您应该使用以下格式字符串:"M/d/yyyy h:mm:ss tt"

DateTime convertedDate = DateTime.ParseExact(
    "5/27/2015 4:49:54 AM",
    "M/d/yyyy h:mm:ss tt",
    new CultureInfo("en-US", true));

然后,您可以将DateTime.ToString与所需的格式字符串"yyyy-dd-MM'T'hh:mm:sszzz"一起使用2015-27-05T04:49:54+08:00作为输出:

string result = convertedDate.ToString("yyyy-dd-MM'T'hh:mm:sszzz");  // zzz to get UTC offset

请参阅:The "zzz" Custom Format Specifier