字符串表示日期,并将其重新格式化



以下情况:有一个字符串的格式为"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时间:

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()将日期写回另一个具有所需格式的字符串。

您可以将其解析为日期对象,然后在使用日期时提供所需的格式。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");

最新更新