如何自定义日期时间格式或将DateTime转换为具有所需格式的String

时间:2009-12-09 05:18:06

标签: c#

我有24小时格式的日期时间字符串..“2009-12-31T23:59:59”
我想要这种格式..“12/31/2009 23:59:59”即:“MM / DD / YYYY HH:MM:SS”

当我试图将它转换为字符串时,我得到“12/31/2009 11:59:59 PM”..虽然我可以为字符串操作编写代码..它似乎没有是有效的..而且当我有像“2009-1-1T1:19:15”这样的dateTime值时情况变得最糟糕..这里,因为字符串长度变化,我不能甚至使用substring()和convert.ToInt()跟踪小时和月的值。

我正在使用visual studio 2005,当我发出错误时说“无法将DateTime隐式转换为字符串”写下这句话: ..

result = Convert.ToString(dateValue);

我简化了我的问题: 有没有什么方法可以将“yyyy-mm-ddThh:mm:ss”格式转换为“mm / dd / yyyy hh:mm:ss”..它必须在visual studio 2005中有效..

4 个答案:

答案 0 :(得分:4)

您需要使用ParseExact将其恢复到日期时间:

string FormatDateTime(string dateString) {
    DateTime dt = DateTime.ParseExact(dateString, "yyyy-MM-ddTHH:mm:ss", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None);
    return dt.ToString("MM/dd/yyyy HH:mm:ss");
}

这应该可以为您提供所需的输出。通过使用InvariantInfo,它将确保您的系统设置不会用您当前在系统中定义的任何内容替换斜杠。我想我在评论中看到你有一个“。”被用作日期分隔符。

http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.dateseparator.aspx http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.invariantinfo.aspx

答案 1 :(得分:2)

类似的东西:

string s = DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss");

答案 2 :(得分:1)

string FormatDateString(string date_string)
{
    DateTime date;
    if (!DateTime.TryParse(date_string, out date)
    {
        return null;
    }

    return date.ToString("MM/dd/yyyy HH:mm:ss");
}

答案 3 :(得分:-1)

它是这样的:XmlConvert.ToDateTime(yourDate, "yyyy-MM-dd\Thh:mm:ss").ToString("MM/dd/yyyy HH:MM:SS")

点击此处了解更多信息:

http://msdn.microsoft.com/en-us/library/kzk5c6y9.aspx