Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从';转换日期字符串;年月日h:mm:ss tt';至';yyyy-dd-mmTHH:mm:ss';?C#_C#_Date_Parsing_Datetime_Time - Fatal编程技术网

如何从';转换日期字符串;年月日h:mm:ss tt';至';yyyy-dd-mmTHH:mm:ss';?C#

如何从';转换日期字符串;年月日h:mm:ss tt';至';yyyy-dd-mmTHH:mm:ss';?C#,c#,date,parsing,datetime,time,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)); 我也尝试过这

我有一个字符串看起来像
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);

请尝试
convertedDate.ToString(“yyyy-MM-ddThh:MM:sszzz”)
,本地计算机上的日期和时间设置可能会影响输出的格式化方式,因此您不能总是依赖内置的格式化字符串

首先将原始
字符串
解析为
日期时间
。然后将
DateTime
格式化为所需格式的
字符串

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


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

您需要先解析,然后将所需的格式字符串与
ToString
translate一起使用

试试这个:

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.ParseExact
交换
DateTime.Parse
将尝试使用您的系统区域性进行解析。如果你需要/想要,你可以更具体一些

另外,请记住,格式字符串中的
f
会创建一个强制小数。要匹配指定的输出,应使用
F
或省略

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

然后,您可以使用
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
请参阅:

尝试此代码

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”。

您有一个字符串
“5/27/2015 4:49:54 AM”
并使用
“yyyyy”-“MM”-“dd'T'HH':“MM”:“ss.fffffff k”
作为
ParseExact
中的格式字符串?当然,这是行不通的。你需要提供你想要解析的格式,而不是。这给了你一个约会时间。但是,似乎需要添加偏移量,因此该类型可能更有用。或者可能更容易使用。@TimSchmelter说“那当然不行”一点帮助都没有。可能是重复的
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");