繁体   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