将 MM/DD/YYYY HH:MI:SS AM/PM 转换为 DD/MM/YYYY 在 C# 中。

4
我怎样用C#将 MM/DD/YYYY HH:MI:SS AM/PM 转化成 DD/MM/YYYY ?我正在使用 C#2008。
谢谢。

請提供輸入和輸出以及它們的類型。 - Davide Piras
2
请查看 Date.ParseExact()。你有尝试过任何东西吗? - Bala R
可以尝试使用String.Format()。 - Thinhbk
使用格式/区域设置指定 Date.ToString - crashmstr
输入数据类型为字符串,输出为数据库日期(DT_DBDATE)。 - David
MSDN是你的朋友,要好好认识她:http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=VS.90).aspx - dario_ramos
3个回答

17

使用TryParseExact解析为DateTime,然后使用格式字符串ToString进行转换...

DateTime dt;
if (DateTime.TryParseExact(value, "MM/dd/yyyy hh:mm:ss tt",
                           CultureInfo.InvariantCulture, DateTimeStyles.None,
                           out dt))
{
    string text = dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
    // Use text
}
else
{
    // Handle failure
}

嗨John,第二行的“Date”是什么意思?我在这一行遇到了错误。你能帮我解决一下吗? - Karthik
@Karthik:只是一个打字错误 - 现在已经修复了。 - Jon Skeet

1

由于时间部分无关紧要,因此您可以在解析和重新格式化之前将其截断:

date = DateTime.ParseExact(date.Substring(0, 10), "MM'/'dd'/'yyyy", CultureInfo.InvariantCulture).ToString("dd'/'MM'/'yyyy");

编辑:

根据您的评论,您不需要一个字符串作为结果,因此您不应该将日期格式化为字符串,只需获取日期作为DateTime值:

Datetime dbDate = DateTime.ParseExact(date.Substring(0, 10), "MM'/'dd'/'yyyy", CultureInfo.InvariantCulture);

现在你可以在代码中使用DateTime值,如果需要的话,将其包装在数据库驱动程序类型中。

0
如果这是一个DateTime对象,你应该能够选择一个不同的格式。
如果它是一个字符串,请使用以下内容:
public string convert(string date){
    string[] pieces = date.Split("/");
    string day = pieces[1];
    string month = pieces[0];
    string year = pieces[2].split(" ")[0];
    return day + "/" + month + "/" + year;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接