日历 System.Globalization.GregorianCalendar 不支持字符串
Posted
技术标签:
【中文标题】日历 System.Globalization.GregorianCalendar 不支持字符串【英文标题】:string is not supported in calendar System.Globalization.GregorianCalendar 【发布时间】:2013-07-10 01:52:33 【问题描述】:我在 12 点之后的日期之后检索日期时遇到问题。例如:如果我从日历扩展器中单击:2/7/2013 到 19/7 月/2013 年,会出现此错误:表示的 DateTime。
这是我的代码。
var format = "MM/dd/yyyy";
DateTime one = DateTime.ParseExact(startdate, format, CultureInfo.InvariantCulture);
DateTime two = DateTime.ParseExact(enddate, format, CultureInfo.InvariantCulture);
if (two >= one)
SqlConnection conn = new SqlConnection("Data Source=""catalog="";Integrated Security=True");
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT Name,CLass, NRIC, StallNo, AmountSpent ,TimeDate=convert(nvarchar,timedate,103) FROM StudentTransactions WHERE TimeDate BETWEEN '" + one + "' AND '" + two + "'", conn);
SqlDataReader reader = cmd.ExecuteReader();
GridView1.DataSource = reader;
GridView1.DataSourceID = null;
GridView1.Visible = true;
GridView1.DataBind();
conn.Close();
【问题讨论】:
你看过ParseExact
吗? msdn.microsoft.com/en-us/library/ms131038.aspx
你应该使用参数而不是强制one
和two
在你的查询中被任意转换回字符串。
【参考方案1】:
试试这个
select CONVERT(varchar,<datecol>,103) --- and will return as dd/mm/yyyy
where convert(date,<datecol>) between '' and ''
【讨论】:
SELECT CONVERT(varchar,如果您想从 CodeBehind 更改 GridView
列的格式,请将 RowDataBound
添加到您的网格视图中。
然后在 GridView_RowDataBound(object sender, GridViewRowEventArgs e)
方法中,您将能够访问 e,这将使您能够访问该行的各个单元格,您可以在其中指定格式。
Reference
Reference2
【讨论】:
@PorWeiting 检查参考2【参考方案3】:首先确保TimeDate
列的日期部分采用您想要的格式,即“dd/mm/yyyy”。
var format = "dd/mm/yyyy";
DateTime one = DateTime.ParseExact(startdate, format, CultureInfo.InvariantCulture);
DateTime two = DateTime.ParseExact(enddate, format, CultureInfo.InvariantCulture);
编辑: 要格式化输出,您可以执行以下操作: 假设您在 GridView1 上的 TimeDate 上有一个 Boundfield:
<asp:BoundField DataField="TimeDate" HeaderText="TimeDate" DataFormatString="0:dd/MM/yyyy" />
您也可以使用DataFormatString="0:d"
以您当前文化的短日期格式输出日期。
【讨论】:
打印出来的数据还是这个格式。这是 mm/dd/yyyy 时间:7/3/2013 12:00:00 AM 我想删除时间并将格式更改为 dd/mm/yyyy。 哦...所以您正在尝试格式化输出..我误解了这个问题..会更新我的答案。 请查看我的编辑...如果它不起作用,请提供更多信息。你的代码。 它仍然无法正常工作。日期格式为 MM/dd/yyyy,这导致当我从 7 月 12 日开始从日历扩展器中选择日期时,它让我一直遇到此错误:将 char 数据类型转换为 datetime 数据类型导致输出范围内的日期时间值。 我从另一个 aspx 页面的日期选择器中读取我的日期并通过会话传递日期,这是我如何检索它的代码:string startdate = (string)(Session["startdate"] );我的来自 gridview 的 aspx 页面从我上面所说的 sql 语句中读取数据。以上是关于日历 System.Globalization.GregorianCalendar 不支持字符串的主要内容,如果未能解决你的问题,请参考以下文章