2017-01-18
2023-02-20 最後更新
Visual Studio 2015
在 SQL Server 中,如果欄位定義為 datetime,在 SQL Server Management Studio 中 SELECT 時候,顯示的是 24 小時制,不會有 上午、下午 出現。
但是在 ASP.NET 顯示該欄位值,會出現 上午、下午。
********************************************************************************
在 SQL 語法用 CONERT 轉換,只取得 年月日,這樣 ASP.NET 顯示時候只有 年月日。
SELECT CONVERT(VARCHAR,[MyDateTime],111) AS MyDate
CAST 和 CONVERT (Transact-SQL) - SQL Server | Microsoft Docs
SELECT convert(varchar, getdate(), 111) - yyyy/mm/dd
SELECT convert(varchar, getdate(), 112) - yyyymmdd
SELECT convert(varchar, getdate(), 120) - yyyy-mm-dd hh:mm:ss(24h)
SELECT convert(varchar, getdate(), 121) - yyyy-mm-dd hh:mm:ss.mmm
SELECT replace(convert(varchar, getdate(), 111), -/-, - -) - yyyy mm dd
SELECT convert(varchar(7), getdate(), 126) - yyyy-mm
SELECT right(convert(varchar, getdate(), 106), 8) - mon yyyy
********************************************************************************
若為 ASP.NET 字串,可直接 Replace
string myDate = myDateTimeString.Replace("上午", "").Replace("下午", "");
但是注意 "下午 01:00:00" 拿掉下午,會變成 "01:00:00",時間錯誤。
如果該字串值其實只儲存年月日,則時分秒一定是 "上午 12:00:00",可以這樣取代。
********************************************************************************
若使用 Calendar 取日期,可以設定格式,取得的值不會有上午、下午。
// 除去日期格式中的 "上午"、"下午"
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
Calendar1.Visible = true;
}
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
TextBox_CreateTime1.Text = Calendar1.SelectedDate.ToString("yyyy/MM/dd HH:mm:ss");
Calendar1.Visible = false;
}
********************************************************************************
您可以使用 DateTime.ParseExact 方法來將 12 小時制的字串值轉換為 24 小時制的日期時間值,然後使用 ToString 方法來輸出您需要的日期時間字串格式。以下是一個 C# 的範例代碼:
string myDate = "2/23/2023 10:30 AM"; // 12小時制的字串值
DateTime dt = DateTime.ParseExact(myDate, "M/d/yyyy h:mm tt", CultureInfo.InvariantCulture);
// 使用 ParseExact 方法將 12小時制的字串值轉換為 24小時制的日期時間值
string newDate = dt.ToString("yyyy-MM-dd HH:mm:ss");
// 使用 ToString 方法將日期時間值轉換為您需要的日期時間字串格式,這裡使用的是 24小時制的格式 "yyyy-MM-dd HH:mm:ss"
Console.WriteLine(newDate); // 輸出 "2023-02-23 10:30:00"
在上面的範例中,使用了 DateTime.ParseExact 方法來解析 myDate 字串值,指定了其格式為 "M/d/yyyy h:mm tt",其中 "tt" 表示上午/下午的標記,而 "h" 則表示 12小時制的小時值。然後,使用 ToString 方法將日期時間值轉換為您需要的日期時間字串格式,指定了其格式為 "yyyy-MM-dd HH:mm:ss",其中 "HH" 表示 24小時制的小時值。
請注意,DateTime.ParseExact 方法可能會拋出異常,例如如果 myDate 字串值無法解析為指定的格式時。因此,在實際使用中,您可能需要對這些異常進行處理。
********************************************************************************
(完)
(完)
沒有留言:
張貼留言