杏仁豆腐@早睡早起
@hsingnchu
Wed, Jun 7, 2023 1:53 PM
Wed, Jun 7, 2023 2:02 PM
杏仁豆腐的軟工後端筆記
C# datetimepicker控制項的日期轉換
2023/06/07<=>20230607
雖然可以在屬性中設定customFormat為yyyyMMdd、yyyy/MM
但實際上無論Format是什麼,若是取值(datetimepicker.Value)永遠等於yyyy/MM/dd
若是需要讀寫SQL資料庫,會因資料庫日期格式非yyyy/MM/dd而產生錯誤
掰噗~
@baipu
覺得
Wed, Jun 7, 2023 1:53 PM
你說得真是太對了!
杏仁豆腐@早睡早起
@hsingnchu
Wed, Jun 7, 2023 1:55 PM
1.若SQL格式為yyyyMMdd 解決 cs檔<=>SQL
//呈現在控制項的時間樣式
datetimepicker.Value = Convert.ToDateTime("1900/01/01");
//傳回資料庫之前做轉換
DateTime dtDATE = Convert.ToDateTime(datetimepicker.Value)
string strDATE = dtDATE.ToString("yyyyMMdd");
//......SQL指令及連線......
SqlCommandDATE.Parameters.AddWithValue("
dtDATE
", strDATE);
//......其他的SQL指令......
杏仁豆腐@早睡早起
@hsingnchu
Wed, Jun 7, 2023 1:57 PM
上面的dtDATE 應該是 @ dtDATE
杏仁豆腐@早睡早起
@hsingnchu
Wed, Jun 7, 2023 1:58 PM
2..若SQL格式為yyyyMMdd 解決 cs檔<=>DataGridView
//用SQL的主鍵欄位查出資料
object[] objFindKeys = new object[KeyFields.Count];
DataRow drRow = GdtSingleTable.Rows.Find(objFindKeys);
drRow["日期"] = DateTime.ParseExact(datetimepicker.Value.ToString(), "yyyy/MM/dd", System.Globalization.CultureInfo.InvariantCulture).ToString("yyyyMMdd");
杏仁豆腐@早睡早起
@hsingnchu
Wed, Jun 7, 2023 1:59 PM
3. 查出後的資料要從DataGridView轉到操作畫面中,需要強制轉型DateTime.ParseExact才能用格式yyyyMMdd寫入
strDATE.CellValue = gridSingleTable.Rows[e.RowIndex].Cells[strDATE].Value.ToString();
strDATE.Value = DateTime.ParseExact(gridSingleTable.Rows[e.RowIndex].Cells[strDATE].Value.ToString(), "yyyyMMdd",
System.Globalization.CultureInfo.InvariantCulture).ToString("yyyy/MM/dd");
載入新的回覆
C# datetimepicker控制項的日期轉換
2023/06/07<=>20230607
雖然可以在屬性中設定customFormat為yyyyMMdd、yyyy/MM
但實際上無論Format是什麼,若是取值(datetimepicker.Value)永遠等於yyyy/MM/dd
若是需要讀寫SQL資料庫,會因資料庫日期格式非yyyy/MM/dd而產生錯誤
//呈現在控制項的時間樣式
datetimepicker.Value = Convert.ToDateTime("1900/01/01");
//傳回資料庫之前做轉換
DateTime dtDATE = Convert.ToDateTime(datetimepicker.Value)
string strDATE = dtDATE.ToString("yyyyMMdd");
//......SQL指令及連線......
SqlCommandDATE.Parameters.AddWithValue("dtDATE", strDATE);
//......其他的SQL指令......
//用SQL的主鍵欄位查出資料
object[] objFindKeys = new object[KeyFields.Count];
DataRow drRow = GdtSingleTable.Rows.Find(objFindKeys);
drRow["日期"] = DateTime.ParseExact(datetimepicker.Value.ToString(), "yyyy/MM/dd", System.Globalization.CultureInfo.InvariantCulture).ToString("yyyyMMdd");
strDATE.CellValue = gridSingleTable.Rows[e.RowIndex].Cells[strDATE].Value.ToString();
strDATE.Value = DateTime.ParseExact(gridSingleTable.Rows[e.RowIndex].Cells[strDATE].Value.ToString(), "yyyyMMdd",
System.Globalization.CultureInfo.InvariantCulture).ToString("yyyy/MM/dd");