将日期转换为正确的格式

Posted

技术标签:

【中文标题】将日期转换为正确的格式【英文标题】: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”类型的格式。

【问题讨论】:

【参考方案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();

希望对你有帮助

【讨论】:

以上是关于将日期转换为正确的格式的主要内容,如果未能解决你的问题,请参考以下文章

将日期转换为正确的格式

将日期时间转换为dojo中正确的日期时间格式

如何正确地将数据帧的所有日期时间列转换为 iso 格式

读取 xls,将所有日期转换为正确格式,-> 写入 csv

将经过的毫秒转换为正确的 java 日期格式?

使用 SimpleDateFormat 将字符串转换为日期返回不正确的格式 [重复]