簡體   English   中英

24小時格式化日期的方法

[英]ways to format my date with 24hr

有人可以向我展示一種使用SQL和C#格式化日期字符串的方法,如下所示嗎?

2/24/2012 22:00

注意:我不需要秒。

給出:

declare @myDate varchar(50)
set @myDate = '2/24/2012 10:00 PM'

select @myDate

我正在顯示上面的代碼片段,以指示日期的源類型為varchar。

在C#中,您可以將參數傳遞給ToString()方法以獲取所需的確切信息。 在此處有充分的文檔記錄: http//www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm

據此,您應該嘗試:

myDate.ToString("MM/dd/yyyy HH:mm");

在SQL Server <= 2008 R2中,您可以說:

SELECT  CONVERT(CHAR(10), CONVERT(DATETIME, @myDate), 101) 
+ ' ' + CONVERT(CHAR(5),  CONVERT(DATETIME, @myDate), 8)

但是,這將產生您似乎不需要的前導零(並且似乎沒有其他人抓住)。 如果您想保留m / d / yyyy格式(無論如何,建議不要這樣做-最好使用yyyy-mm-dd這樣的語言和區域模棱兩可的格式),最好保留該部分的字符串原樣,只是按如下方式轉換時間:

SELECT CONVERT(CHAR(5), CONVERT(DATETIME, '10:00 PM'), 8);

當然,對於任意日期,您可以按以下方式強行使用:

SELECT RTRIM(MONTH(@myDate)) + '/' + RTRIM(DAY(@myDate)) + '/' + RTRIM(YEAR(@myDate))

結合這些當然可以轉換為C#:

DateTime.Now.ToString("M/d/yyyy HH:mm");

在SQL Server 2012中,您將能夠在T-SQL中使用幾乎相同的語法:

SELECT FORMAT(SYSDATETIME(), 'M/d/yyyy HH:mm');

撰寫本文時的結果:

2/25/2012 00:38

去年八月,當我第一次在CTP3中看到該功能時,我在博客中介紹了新的FORMAT()功能 。這是非常強大的功能。)

我於2003年撰寫的常見問題解答文章中,您可以看到一個表格,顯示所有可用於CONVERT的有效樣式。 我還將在另一篇FAQ文章中介紹如何創建自己的函數,但由於前導零,因此它並未明確涵蓋您所追求的格式。

這可能不是最有效的方法,但是我認為它應該起作用:

declare @myDate varchar(50)
set @myDate = '2/24/2012 10:00 PM'

DECLARE @thisDate DATETIME
SET @thisDate = CAST(@myDate AS DATETIME)

SELECT CONVERT (NVARCHAR(10),@thisDate, 101) + ' ' + CONVERT(NVARCHAR(5), @thisDate, 8)

對於SQL,您可以嘗試:

DECLARE @date DATETIME;
SET @date = CONVERT(DATETIME, @myDate, 20);
SELECT convert(varchar(10), @date, 101) + convert(varchar(5), @date, 114);

對於C#,

DateTime convertedDate = DateTime.Parse('2/24/2012 10:00 PM');
String newDateStr = convertedDate.toString("MM/dd/yyyy HH:mm");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM