我想做一個 ac# 應用程式,它會執行一個 if 邏輯操作來驗證時間是否與營業時間一致。我嘗試在下面使用此代碼,但它顯示錯誤
DateTime data = DateTime.Parse(txt_Hora.Text, System.Globalization.CultureInfo.CurrentCulture);
if (data > "09:00")
{
MySqlCommand cmd1 = new MySqlCommand("INSERT INTO produtos_pedidos (quantidade, data_pedido, subtotal, hora) VALUES ('" cmb_Quantidade.Text "','" txt_Data.Text "','" lbl_Subtotal.Text "','" txt_Hora.Text "')", bdcon);
cmd1.ExecuteNonQuery();
MessageBox.Show("Reservado com sucesso");
}
這是錯誤:運算子“>”不能應用于日期時間型別和字串型別
uj5u.com熱心網友回復:
你可以使用類似的東西:
if (data.TimeOfDay > new TimeSpan(0, 9, 0, 0))
{
// Whatever
}
uj5u.com熱心網友回復:
不要使用字串連接來構造 SQL 陳述句。這會使您面臨類似這樣的 SQL 注入攻擊和轉換錯誤。改用引數化查詢:
var sql="INSERT INTO produtos_pedidos (quantidade, data_pedido, subtotal, hora) VALUES (@quant,@data,@total,@hora)";
using var cmd=new MySqlCommand(sql, bdcon);
cmd.Parameters.AddWithValue("@quant",quant);
cmd.Parameters.AddWithValue("@data",pedido);
cmd.Parameters.AddWithValue("@total",total);
cmd.Parameters.AddWithValue("@hora",hora);
cmd.ExecuteNonQuery();
在使用它們之前將文本值決議為正確的型別。如果可能,請使用提供所需型別的 UI 元素。如果您使用帶有值或產品的組合,請將其值系結到實際 ID 或數量,并使用該值而不是字串標簽。如果您想選擇時間,請使用 DateTimePicker 設定作為 TimePicker 作業,例如:
var quant=(int)cmb_Quantidade.SelectedValue;
var data=txt_Data.Text ;
var total=decimal.Parse(lbl_Subtotal.Text);
var hora=timePicker.Value.Time;
一天中的時間由TimeSpan型別表示。a 的時間DateTime由TimeOfDay屬性回傳。如果您不能使用 DateTimePicker(為什么?),您需要將資料決議為 TimeSpan:
var hora=TimeSpan.Parse(txt_Hora.Text);
把它們放在一起:
var quant=(int)cmb_Quantidade.SelectedValue;
var data=txt_Data.Text;
var total=decimal.Parse(lbl_Subtotal.Text);
var hora=timePicker.Value.Time;
if (hora>TimeSpan.FromHours(9))
{
using var cmd=new MySqlCommand(sql, bdcon);
cmd.Parameters.AddWithValue("@quant",quant);
cmd.Parameters.AddWithValue("@pedido",pedido);
cmd.Parameters.AddWithValue("@total",total);
cmd.Parameters.AddWithValue("@hora",hora);
cmd.ExecuteNonQuery();
}
uj5u.com熱心網友回復:
將字串轉換為時間c#
使用時間跨度進行比較
TimeSpan timeSpan = new TimeSpan(
0,
data.Hour,
data.Minute,
data.Second,
data.Millisecond);
var ttt = timeSpan.ToString();
TimeSpan timeSpan2 = new TimeSpan(0, 9, 0, 0, 0); // "09:00"
if (timeSpan > timeSpan2)
{
... //Your code
}
或者干脆
if (data.TimeOfDay > new TimeSpan(0, 9, 0, 0, 0))
{
... //Your code
}
或者
if (data.TimeOfDay > TimeSpan.Parse("09:00"))
{
... //Your code
}
uj5u.com熱心網友回復:
首先,您將 DateTime 與字串進行比較,因此DateTime.Parse("09:00")像在第一行中所做的那樣制作一個可以與data變數進行比較的日期時間
2,比較 2 DateTime 變數使用DateTime.Compare而不是 > 操作作為錯誤訊息建議。
uj5u.com熱心網友回復:
只需與兩個合作TimeSpan
TimeSpan timeOfTheDay = TimeSpan.Parse(txt_Hora.Text, System.Globalization.CultureInfo.CurrentCulture);
if (timeOfTheDay > new TimeSpan(9,0,0))
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/487181.html
上一篇:基于日期時間值組合資料框
下一篇:合并和排序日期時間列
