以下案例: 有一个字符串的格式为“2012-02-25 07:53:04”
但最后,我宁愿以这种格式结束“25-02-2012 07:53:04”
我认为我有两个选择。 1将重新格式化字符串并将其全部移动,但我不认为这是一种干净的方式。
我想到的另一种方法是将源字符串保存到日期参数,然后将日期参数写回特定日期格式的字符串。 但这有可能吗?
答案 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
- 但我建议使用TryParseExact
或ParseExact
,同时指定不变文化,除非真的想要使用当前的文化。例如:
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.Parse
将string
解析为DateTime
结构,然后使用ToString()
将日期写回到具有您想要的格式的另一个字符串
答案 5 :(得分:0)
您可以将其解析为日期对象,然后在使用date.ToString方法时提供所需的格式:
date.ToString("dd-MM-yyyy hh:mm:ss");