我将以下日期存储为字符串
04.09.2009 (dd.mm.yyyy)
现在我希望它改为这种格式:
2009/08/31 (yyyy/mm/dd)
记住输出应该是字符串值,输入日期是字符串。
以最小的努力转换它的最佳方法是什么?
答案 0 :(得分:9)
类似的东西:
public static string ConvertDateTimeFormat(string input, string inputFormat,
string outputFormat, IFormatProvider culture)
{
DateTime dateTime = DateTime.ParseExact(input, inputFormat, culture);
return dateTime.ToString(outputFormat, culture);
}
(您可以为文化指定null
以使用当前线程的文化。)
测试代码:
using System;
class Test
{
public static string ConvertDateTimeFormat(string input, string inputFormat,
string outputFormat, IFormatProvider culture)
{
DateTime dateTime = DateTime.ParseExact(input, inputFormat, culture);
return dateTime.ToString(outputFormat, culture);
}
static void Main()
{
Console.WriteLine(ConvertDateTimeFormat("04.09.2009", "dd'.'MM'.'yyyy",
"yyyy'/'MM'/'dd", null));
}
}
答案 1 :(得分:5)
为什么要将日期存储为字符串?这通常是一个坏主意......
要将您解析的字符串转换为DateTime值,即格式化为字符串的格式:
string newFormat = DateTime.ParseExact(theDate, "dd'.'MM'.'yyyy", CultureInfo.InvariantCulture).ToString("yyyy'/'MM'/'dd")
(请注意,您需要在斜杠周围使用撇号来获取文字字符,否则它将使用文化的日期分隔符,这可能是不同的字符。)
答案 2 :(得分:3)
DateTime dateTime = DateTime.ParseExact("04.09.2009", "dd.MM.yy", null);
dateTime.ToString("yyyy/MM/dd");
答案 3 :(得分:1)
如果您的输入和输出都是字符串,那么您根本就没有真正处理日期。您可以使用字符串操作来执行转换:
string original = "04.09.2009";
string converted = original.Substring(6, 4) + "/" +
original.Substring(3, 2) + "/" +
original.Substring(0, 2);