【问题标题】:Converting date to proper format将日期转换为正确的格式
【发布时间】:2016-03-08 12:33:25
【问题描述】:

我在 ms-sql 数据库中有一个表,其中包含如下列中的日期:

2010-06-24 00:00:00.000

然后在 c# 中,我使用语句获取这些日期并将其分配给一个变量,该变量填充使用 asp.net 制作的网页上的网格列。

            SqlCommand command = new SqlCommand();
            //connection info here
            sql2 = "(select statement here);
            command.CommandText = sql2;
            dates["Entry"] = command.ExecuteScalar();

所以,这用正确的日期填满了网格,但是,我正在尝试格式化它,所以我只用斜杠得到月、日和年,而不是之后的时间。像这样:

06/24/2010

我尝试将其转换为日期时间并使用:

ToString("MM/dd/yyyy")

我尝试过使用阅读器并执行以下操作:

reader.GetDatetime.toString("MM/dd/yyy")

这也不起作用。我似乎无法找到正确的方法来做到这一点。任何提示都会很棒。

编辑:这是 sql2 语句:

sql2 = "select max(day) as day from users u join days d on d.User_ID = u.id where u.ActiveUser = 1 and u.id = " + Users["ID"].ToString();

这只是获取用户输入内容的最近日期。

编辑 2: 网格中显示的日期类似于“3/12/2013 12:00:00 AM”。

编辑 3:.ExecuteScalar() 函数似乎将日期自动格式化为“3/12/2013 12:00:00 AM”类型的格式。

【问题讨论】:

    标签: c# sql asp.net sql-server datetime


    【解决方案1】:

    只需将格式更改为yyyy-MM-ddlike;

    dates["Entry"] = ((DateTime)command.ExecuteScalar()).ToString("yyyy-MM-dd", 
                                                         CultureInfo.InvariantCulture); 
    

    【讨论】:

    • 请问cultureinfo是什么?当我尝试使用它时,它是无效的。
    • @pfinferno 哦,对了,ExecuteScalar 返回object。我假设您返回的列类型与 CLR 端的 DateTime 映射,您需要获取 DateTimetextual 表示。 InvariantCulture 保证生成您的 DateTime 值的公历表示。
    • 哦,我明白了,谢谢您的回复!我尝试了你所做的,以及之前类似的事情。尽管“用户代码未处理 InvalidCastException”,但我收到此错误。 - 指定的演员表无效。
    • @pfinferno 您的 select 语句返回的第一列的类型是什么?
    • 你是指SQL表中的列吗?当我转到列本身的属性时,它会显示 Data Type = datetime、System Type = datetime、Identity = False,以及一堆其他内容,如主键、允许空值等。
    【解决方案2】:

    2010-06-24 如果你想显示这样的日期时间,你只需传递一个格式字符串“yyyy-mm-dd”,它看起来像这样:

    string Date = new DateTime(2010, 6, 24).ToString("yyyy-mm-dd");
    

    您可以在此链接中详细了解可以在 DateTime 上输出哪些格式: https://msdn.microsoft.com/en-us/library/zdtaw1bw(v=vs.110).aspx

    【讨论】:

      【解决方案3】:

      你也可以使用 ToShortDateString() 函数来截断时间字符串-:

      reader.GetDatetime.ToShortDateString();
      

      【讨论】:

        【解决方案4】:

        在 sql 中尝试以下操作:

        select CONVERT(datetime, column_name, 101) from table_name
        

        101 - 是日期时间样式。您可以通过link找到所有样式

        也在后面的代码中:

        Convert.ToDateTime(reader["column"].ToString()).ToShortDateString();
        

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-31
          相关资源
          最近更新 更多