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

时间:2012-02-28 20:00:16

标签: c# string date

以下案例: 有一个字符串的格式为“2012-02-25 07:53:04”

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

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

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

6 个答案:

答案 0 :(得分:8)

这样做:

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()

答案 1 :(得分:2)

其他人建议使用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);
}

答案 2 :(得分:1)

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

答案 3 :(得分:0)

是的,您可以使用custom DateTime format strings来解析和重新格式化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");

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

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