【问题标题】:Convert a string to datetime format with 12 hour format将字符串转换为 12 小时格式的日期时间格式
【发布时间】:2013-04-16 10:51:33
【问题描述】:

我在 SQL Server 数据库中有一个字段类型 DateTime。 我正在开发一个网络服务来获取日期和时间。

日期以这种格式 4/14/2013 10:10:01 PM 存储在数据库中。

现在,我有一个如下的网络方法:

public string GetdataJson(string lastdate)
        {

            DateTime myDateTime = DateTime.Parse(lastdate);


            string getvalue = "select * from tblfameface where last_updated >='" + myDateTime  + "'";

            con1 = new SqlConnection(conString1);
            con1.Open();
            SqlCommand cmd = new SqlCommand(getvalue, con1);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt1 = new DataTable();
            da.Fill(dt1);

            string jsonString = JsonConvert.SerializeObject(dt1);
            String finalString = "{\"Records\":";
            finalString += jsonString;
            finalString += "}";
            return finalString;

        }

但是这段代码给了我一个错误,字符串未被识别为有效的日期时间。 如何将字符串转换为日期时间格式,如 4/14/2013 10:10:01 PM? 帮忙!

【问题讨论】:

  • 您要发送到此网络方法的输入是什么?
  • 我将于 2013 年 4 月 14 日晚上 10:10:01 经过
  • 只是确认:您在哪一行得到异常?我认为可能是参数lastdate中的意外输入
  • 您有一个使用 24 小时制的文化变体 msdn.microsoft.com/en-us/library/ch92fbc1(v=vs.110).aspx "因为 DateTime.TryParse(String, DateTime) 方法尝试使用格式规则解析日期和时间的字符串表示形式当前文化,尝试跨不同文化解析特定字符串可能会失败或返回不同结果。如果将跨不同区域解析特定日期和时间格式,请使用 DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) 方法或TryParseExact 的重载之一.."

标签: c# asp.net datetime


【解决方案1】:

你想要 12 小时制使用小 hh ,你想要 24 小时制使用大写 HH

DateTime formatted =Covert.ToDateTime( lastdate.ToString("dd/MM/yyyy hh:mm:ss.fff",
                                      CultureInfo.InvariantCulture));

如果您想使用 12 小时制,请在格式字符串中使用 tt 来生成 AM/PM 指示符。

【讨论】:

    【解决方案2】:

    在您的格式字符串中,PM/AM 部分使用tt。代码如下:

     DateTime dateTime = 
        DateTime.ParseExact("4/14/2013 10:10:01 PM", 
                            "M/dd/yyyy hh:mm:ss tt",
                            System.Globalization.CultureInfo.InvariantCulture);
    

    这也应该有效:

    DateTime result = DateTime.Parse("04/14/2013 10:10:01 PM");
    

    你确定你得到了正确的字符串吗?

    【讨论】:

    • @Hossein Narimani Rad-您的代码给出的错误是 ParseExact 的重载方法没有采用 2 个参数
    • 我的情况不是这样,现在该怎么办?
    • 上面的代码可以正常工作..即使 Convert.ToDateTime() 也可以工作...请检查输入...。
    • 好的,只是告诉我使用 12 小时格式的一个很好的例子告诉她你正在将一个字符串转换为 12 小时格式是一个很好的例子吗?使用 2/2/13 23:40:45 PM 之类的东西并将其转换为 12 小时格式!继续.. :/ @Khushbu,你有什么工作吗?如果是这样,请告诉我!
    【解决方案3】:

    试试这个:

    string getvalue = "select * from tblfameface where
         last_updated >= Convert(DateTime, '" + myDateTime  + "')";
    

    或者这取决于你在 last_updated 列上的 SQL 数据类型

    string getvalue = "select * from tblfameface where
         last_updated >= Convert(DateTime2(7), '" + myDateTime  + "')";
    

    【讨论】:

      【解决方案4】:

      使用此代码

      DateTime.ParseExact(yourString, "MM/dd/yyyy hh:mm:ss tt");
      

      【讨论】:

        【解决方案5】:

        将查询行替换为

        string getvalue = "select * from tblfameface where CAST(last_updated AS 
        DATETIME)>='" + myDateTime.ToString("dd/MM/yyyy hh:mm:ss tt")  + "'";
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-08-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-09
          相关资源
          最近更新 更多