杏仁豆腐@早睡早起
杏仁豆腐的軟工後端筆記
C# datetimepicker控制項的日期轉換
2023/06/07<=>20230607

雖然可以在屬性中設定customFormat為yyyyMMdd、yyyy/MM

但實際上無論Format是什麼,若是取值(datetimepicker.Value)永遠等於yyyy/MM/dd

若是需要讀寫SQL資料庫,會因資料庫日期格式非yyyy/MM/dd而產生錯誤
掰噗~
你說得真是太對了!
杏仁豆腐@早睡早起
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指令......
杏仁豆腐@早睡早起
上面的dtDATE 應該是 @ dtDATE
杏仁豆腐@早睡早起
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");
杏仁豆腐@早睡早起
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");
載入新的回覆