string表示日期,并重新格式化

以下情况:有一个字符串,格式为“2012-02-25 07:53:04”

但最后,我宁愿以这种格式结束“25-02-2012 07:53:04”

我想我有两个选择。 1将重新格式化字符串并将其全部移动,但我不认为这是一种干净的方式。

我想到的另一种方法是将源字符串保存到日期参数,然后将日期参数写回特定日期格式的字符串。 但这有可能吗?

做这个:

DateTime.Parse("2012-02-25 07:53:04").ToString("dd-MM-yyyy hh:mm:ss"); 

请记住,这不是文化意识。 如果您确实需要存储中间结果,您可以轻松地执行此操作:

 var myDate = DateTime.Parse("2012-02-25 07:53:04"); var myDateFormatted = myDate.ToString("dd-MM-yyyy hh:mm:ss"); 

最后,如果您不能保证输入格式始终有效,请查看TryParse()

其他人建议使用Parse – 但我建议使用TryParseExactParseExact ,同时指定不变文化,除非你真的想要使用当前的文化。 例如:

 string input = "2012-02-25 07:53:04"; DateTime dateTime; if (!DateTime.TryParseExact(input, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) { Console.WriteLine("Couldn't parse value"); } else { string formatted = dateTime.ToString("dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture); Console.WriteLine("Formatted to: {0}", formatted); } 

或者使用Noda Time :

 string input = "2012-02-25 07:53:04"; // These can be private static readonly fields. They're thread-safe var inputPattern = LocalDateTimePattern.CreateWithInvariantInfo("yyyy-MM-dd HH:mm:ss"); var outputPattern = LocalDateTimePattern.CreateWithInvariantInfo("dd-MM-yy HH:mm:ss"); var parsed = inputPattern.Parse(input); if (!parsed.Success) { Console.WriteLine("Couldn't parse value"); } else { string formatted = outputPattern.Format(parsed.Value); Console.WriteLine("Formatted to: {0}", formatted); } 

解析为DateTime然后重新格式化它。 小心: 始终使用IFormatProvider

是的,很有可能。 您需要做的就是使用DateTime.Parsestring解析为DateTime结构,然后使用ToString()将日期写回到具有所需格式的另一个字符串。

您可以将其解析为日期对象,然后在使用date.ToString方法时提供所需的格式:

 date.ToString("dd-MM-yyyy hh:mm:ss"); 

是的,您可以使用自定义DateTime格式字符串来解析和重新格式化DateTime对象。

 DateTime date = DateTime.ParseExact("2012-02-25 07:53:04", "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture); string formattedDated = date.ToString("dd-MM-yyyy HH:mm:ss");