在C#中格式化DateTime

时间:2014-04-23 17:28:12

标签: c# datetime

我正在尝试以12小时格式输出日期时间。它适用于一些然后休息。

代码:

while (myReader.Read())
{
    Console.WriteLine("Date Before formatting = " + myReader["Date"].ToString());
    DateTime dt = DateTime.ParseExact(myReader["Date"].ToString(), "yyyy/MM/dd hh:mm:ss", CultureInfo.InvariantCulture);


    string format = "MM/dd/yyyy hh:mm:ss tt";
    Console.WriteLine(myReader["RxNumber"].ToString() + "\t\t" + dt.ToString(format));
}

输出:

连接已打开

格式化之前的日期= 2013/12/26 11:26:08

            12/26/2013 11:26:08 AM

格式化前的日期= 2013/12/26 09:02:01

12345 12/26/2013 09:02:01 AM

格式化之前的日期= 2013/12/26 09:04:29

123456 12/26/2013 09:04:29 AM

格式化前的日期= 2013/10/28 10:19:26

            10/28/2013 10:19:26 AM

格式化前的日期= 2014/02/14 12:25:57

7000006 02/14/2014 12:25:57 AM

格式化前的日期= 2014/02/14 13:20:18

System.FormatException:String未被识别为有效的DateTime。    在System.DateTimeParse.ParseExact(String s,String format,DateTimeFormatInfo dtfi,DateTimeStyles style)    at System.DateTime.ParseExact(String s,String format,IFormatProvider provider)    at test.Program.Main(String [] args)在c:\ Users \ Admin \ Desktop \ software中测试test608 \ test \ test \ Program.cs:第33行 ☺按任意键继续。 。

2 个答案:

答案 0 :(得分:2)

您的问题是数据库以24小时格式存储值,您将它们解析为DateTime 12小时格式;请改用:

DateTime dt = DateTime.ParseExact(
    myReader["Date"].ToString(),
    "yyyy/MM/dd HH:mm:ss",
    CultureInfo.InvariantCulture);

正确地从数据库中解析日期后,输出为12小时格式就可以了。

答案 1 :(得分:1)

HH用于军事(24小时)时间。 hh用于标准的12小时时间。