-1

我需要将字符串值解析为日期时间值,我有这种格式的日期:

DD.MM.YYYY

我想以这种格式解析值:

YYYY-MM-DD

我试着这样做:

DateTime.ParseExact(date_req, "yyyy-MM-dd", CultureInfo.InvariantCulture); 

但我有一个错误:字符串未被识别为有效的日期时间。

有没有办法做到这一点?

4

7 回答 7

3

如果您有格式中的字符串,DD.MM.YYYY为什么要传递YYYY-MM-DD给 ParseExact 函数?

试试这样:

string dateStr = "12.06.2012";
DateTime date = DateTime.ParseExact(dateStr, "dd.MM.yyyy", CultureInfo.InvariantCulture);

然后,当您想在DateTime某处输出此实例时,您可以使用YYYY-MM-DD格式,如下所示:

string result = date.ToString("yyyy-MM-dd");
于 2012-06-13T11:23:03.580 回答
1

解析日期时,您需要指定要读取的格式,而不是稍后要输出的格式。

所以dd.MM.yyyy用作ParseExact.

于 2012-06-13T11:23:47.667 回答
1

检查DateTime.ParseExact 方法 (String, String, IFormatProvider) 将日期和时间的指定字符串表示形式转换为其 DateTime 等效项。字符串表示的格式必须与指定的格式完全匹配,否则将引发异常。

您必须将格式字符串指定为DD.MM.YYYY而不是"yyyy-MM-dd".

试试这个:

DateTime dateValue = DateTime.ParseExact(date_req, "DD.MM.YYYY", CultureInfo.InvariantCulture );

// use this when you need to show that formatted date value
string formattedDate = dateValue.ToString("yyyy-MM-dd");

更好的方法是使用DateTime.TryParseExact Method,如果您希望它作为日期而不是字符串修改您的文化信息和日期分隔符。

CultureInfo enUS = new CultureInfo("en-US"); 
string dateString;
DateTime dateValue;
dateString = "05.01.2009"; 
if (DateTime.TryParseExact(dateString, "DD.MM.YYYY", enUS, 
                        DateTimeStyles.None, out dateValue))
   Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                     dateValue.Kind);
else
   Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
于 2012-06-13T11:24:57.260 回答
1

我认为您想要做的是解析您的dd.MM.yyyy然后将其显示为yyyy-MM-dd.

您首先必须将其解析string为 a DateTime

DateTime date = DateTime.ParseExact(date_req, "yyyy-MM-dd", CultureInfo.InvariantCulture); 

现在date是计算机实际理解的日期的表示(在它只是一个字符串之前)。您现在可以随心所欲地显示此对象:

string yyyyMMdd = date.ToString("yyyy-MM-dd");
string arabic = date.ToString("yyyy-MM-dd", new CultureInfo("ar"));
// and so on

不要忘记在字符串之间DateTime来回转换日期时,文化和时区值得牢记。

于 2012-06-13T11:28:44.907 回答
0

首先以现有格式对其进行解析,然后转换为您想要的字符串格式。

var date = DateTime.ParseExact(date_req, "dd.MM.yyyy", CultureInfo.InvariantCulture); 
var str = date.ToString("yyyy-MM-dd");
于 2012-06-13T11:25:04.063 回答
0

您可以先将其转换为字符数组。然后您可以将日/月/年分别解析为整数。你知道数字的索引,所以这很容易。之后,您可以按照自己喜欢的方式连接每个元素。

于 2012-06-13T11:25:07.683 回答
0

错误。你有一个蛋糕,你想吃一个木桩。为了让你的胃相信蛋糕是木桩,你必须把蛋糕变成木桩。这是无法做到的。解析是关于接受一个值,并使用一个模式(或更多)将它转换为其他东西而不是转换它。所以你想要的可能是对的,但你问的是错误的。

于 2012-06-13T11:28:52.797 回答