日付の取得に問題があります日付が12の後に落ちた後。例えば:私はカレンダーエクステンダーからクリックした場合:2013年2月7日から19年7月19日まで、このエラーでそれをスローします: System.Globalization.GregorianCalendar。
これは私のコードです。
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();
}
回答:
回答№1は1これを試して
select CONVERT(varchar,<datecol>,103) --- and will return as dd/mm/yyyy
where convert(date,<datecol>) between "" and ""
回答№2の場合は1
あなたがの列のフォーマットを変更したい場合 GridView
CodeBehindから追加 RowDataBound
あなたのグリッドビューに。
その後、 GridView_RowDataBound(object sender, GridViewRowEventArgs e)
あなたがフォーマットを指定することができるその行の個々のセルへのアクセスをあなたに提供するでしょう。
回答№3の場合は0
最初にあなたの日付の部分を確認してください 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);
編集: 出力をフォーマットするには、ffを実行します。 GridView1のTimeDateにBoundfieldがあるとします。
<asp:BoundField DataField="TimeDate" HeaderText="TimeDate" DataFormatString="{0:dd/MM/yyyy}" />
あなたも使用することができます DataFormatString="{0:d}"
現在のカルチャの短い日付形式で日付を出力します。