C#时间格式转换问题(12小时制和24小时制)

时间:2022-07-15 15:44:59
我用System.DateTime.Now 读取的时间是 24/4/2011 pm 7:43 
如何转换成24小时制的时间? 

String time = "24/4/2011 pm 7:43";
DateTime dt;
DateTime.TryParse(time, out dt);
this.TextBox1.Text = dt.ToString("yyyy-MM-dd HH:mm");
这个方法无效
求解!

18 个解决方案

#1


this.TextBox1.Text = dt.ToString("yyyy-MM-dd hh:mm");  //12
this.TextBox1.Text = dt.ToString("yyyy-MM-dd HH:mm");  //24

#2


Convert.ToDateTime("24/4/2011 pm 7:43").ToString("yyyy-MM-dd HH:mm");

#3


1楼的方法转换后  0001-01-01 00:00
2楼的报错
不信自己试
我电脑下面显示的是24小时制的   问什么用System.DateTime.Now 读取的是12小时制的?

#4


引用 1 楼 q107770540 的回复:
this.TextBox1.Text = dt.ToString("yyyy-MM-dd hh:mm"); //12
this.TextBox1.Text = dt.ToString("yyyy-MM-dd HH:mm"); //24

+1

#5


引用 1 楼 q107770540 的回复:
this.TextBox1.Text = dt.ToString("yyyy-MM-dd hh:mm");  //12
this.TextBox1.Text = dt.ToString("yyyy-MM-dd HH:mm");  //24

+1  正解  

#6


String time = "24/4/2011 pm 7:43";
DateTime dt;
DateTime.TryParse(time, out dt);

你这里转换出来就直接返回 0001-01-01 00:00

你再怎么转换不还是这个值。

#7


该回复于2011-04-26 13:19:57被版主删除

#8


引用楼主 education520 的回复:
我用System.DateTime.Now 读取的时间是 24/4/2011 pm 7:43 
如何转换成24小时制的时间? 

String time = "24/4/2011 pm 7:43";
DateTime dt;
DateTime.TryParse(time, out dt);
this.TextBox1.Text = dt.ToString("yyyy-MM-dd HH:……


时间就是时间,和十二小时24小时制没有任何关系,12或者24小时制只是显示时间的一种模式。
System.DateTime.Now 读取的时间是 24/4/2011 pm 7:43 
这个时间和String time = "24/4/2011 pm 7:43";这个字符串完全是两码事,

            //String time = "24/4/2011 pm 7:43";
            DateTime dt;
            //DateTime.TryParse(time,   out dt);
            dt = DateTime.Now;
            this.textBox1.Text = dt.ToString("yyyy-MM-dd HH:mm");

这样应该是正确显示24小时制的,至于你的问题,是由于字符串转换为时间的格式不对,时间被转换为初始值了

#9


如果你想把字符串转换为正确的值,可以用TryParseExact这个方法


            String time = "24/4/2011 pm 7:43";
            DateTime dt;
           DateTime.TryParseExact(time,"dd/M/yyyy tt hh:mm",new System.Globalization.CultureInfo("en-US"), System.Globalization.DateTimeStyles.None, out dt);
            dt = DateTime.Now;
            this.textBox1.Text = dt.ToString("yyyy-MM-dd HH:mm");

#10


引用 9 楼 hztltgg 的回复:
如果你想把字符串转换为正确的值,可以用TryParseExact这个方法

C# code

            String time = "24/4/2011 pm 7:43";
            DateTime dt;
           DateTime.TryParseExact(time,"dd/M/yyyy tt hh:mm",new System.Global……

+1

#11


刚才的写错了,把dt又重新赋值了一下,但确实有问题,am和pm似乎对tt不起作用,网上搜了一下,也有这种说法

#12


我也很想知道 "24/4/2011 pm 7:43"这个字符串如何转换成DateTime

ParseExact是很强大,但我调试了下,却报异常。

#13



            String time = "24/4/2011 pm 7:43";
            DateTime dt;
            this.Text = (DateTime.TryParseExact(time, "d/M/yyyy tt h:m", new System.Globalization.CultureInfo("en-US"), System.Globalization.DateTimeStyles.None, out dt)).ToString();
            this.textBox1.Text = dt.ToString("yyyy-MM-dd HH:mm");


这样应该可以的了,和日期格式稍有不同就不能转换了,这个字符串日期都是没有前导0的,要用d M h m,不能用dd,MM,hh,mm,地域也要定义清楚,不是en-US也不能转换

#14


hztltgg
不错不错,刚调试了下,ParseExact这个确实很强大。

#15


楼主你这个原始时间串就比较奇怪,在C#时间的对应格式中没有固定下来格式与之对应,也就没有固定可逆的格式了。所以不好弄。比如 在format为en-us的情况下,dt.ToString("g"),生成的串是4/24/2011 7:43 PM,与你那个串最接近了,不存在某个时间一位还是两位的问题。

#16


((DateTime)"2009-10-01 07:52 PM").ToString("yyyy-MM-dd HH:mm");  HH大写是24小时 小写是12小时

#17


该回复于2011-04-26 15:06:49被版主删除

#18


DateTime.TryParseExact

#1


this.TextBox1.Text = dt.ToString("yyyy-MM-dd hh:mm");  //12
this.TextBox1.Text = dt.ToString("yyyy-MM-dd HH:mm");  //24

#2


Convert.ToDateTime("24/4/2011 pm 7:43").ToString("yyyy-MM-dd HH:mm");

#3


1楼的方法转换后  0001-01-01 00:00
2楼的报错
不信自己试
我电脑下面显示的是24小时制的   问什么用System.DateTime.Now 读取的是12小时制的?

#4


引用 1 楼 q107770540 的回复:
this.TextBox1.Text = dt.ToString("yyyy-MM-dd hh:mm"); //12
this.TextBox1.Text = dt.ToString("yyyy-MM-dd HH:mm"); //24

+1

#5


引用 1 楼 q107770540 的回复:
this.TextBox1.Text = dt.ToString("yyyy-MM-dd hh:mm");  //12
this.TextBox1.Text = dt.ToString("yyyy-MM-dd HH:mm");  //24

+1  正解  

#6


String time = "24/4/2011 pm 7:43";
DateTime dt;
DateTime.TryParse(time, out dt);

你这里转换出来就直接返回 0001-01-01 00:00

你再怎么转换不还是这个值。

#7


该回复于2011-04-26 13:19:57被版主删除

#8


引用楼主 education520 的回复:
我用System.DateTime.Now 读取的时间是 24/4/2011 pm 7:43 
如何转换成24小时制的时间? 

String time = "24/4/2011 pm 7:43";
DateTime dt;
DateTime.TryParse(time, out dt);
this.TextBox1.Text = dt.ToString("yyyy-MM-dd HH:……


时间就是时间,和十二小时24小时制没有任何关系,12或者24小时制只是显示时间的一种模式。
System.DateTime.Now 读取的时间是 24/4/2011 pm 7:43 
这个时间和String time = "24/4/2011 pm 7:43";这个字符串完全是两码事,

            //String time = "24/4/2011 pm 7:43";
            DateTime dt;
            //DateTime.TryParse(time,   out dt);
            dt = DateTime.Now;
            this.textBox1.Text = dt.ToString("yyyy-MM-dd HH:mm");

这样应该是正确显示24小时制的,至于你的问题,是由于字符串转换为时间的格式不对,时间被转换为初始值了

#9


如果你想把字符串转换为正确的值,可以用TryParseExact这个方法


            String time = "24/4/2011 pm 7:43";
            DateTime dt;
           DateTime.TryParseExact(time,"dd/M/yyyy tt hh:mm",new System.Globalization.CultureInfo("en-US"), System.Globalization.DateTimeStyles.None, out dt);
            dt = DateTime.Now;
            this.textBox1.Text = dt.ToString("yyyy-MM-dd HH:mm");

#10


引用 9 楼 hztltgg 的回复:
如果你想把字符串转换为正确的值,可以用TryParseExact这个方法

C# code

            String time = "24/4/2011 pm 7:43";
            DateTime dt;
           DateTime.TryParseExact(time,"dd/M/yyyy tt hh:mm",new System.Global……

+1

#11


刚才的写错了,把dt又重新赋值了一下,但确实有问题,am和pm似乎对tt不起作用,网上搜了一下,也有这种说法

#12


我也很想知道 "24/4/2011 pm 7:43"这个字符串如何转换成DateTime

ParseExact是很强大,但我调试了下,却报异常。

#13



            String time = "24/4/2011 pm 7:43";
            DateTime dt;
            this.Text = (DateTime.TryParseExact(time, "d/M/yyyy tt h:m", new System.Globalization.CultureInfo("en-US"), System.Globalization.DateTimeStyles.None, out dt)).ToString();
            this.textBox1.Text = dt.ToString("yyyy-MM-dd HH:mm");


这样应该可以的了,和日期格式稍有不同就不能转换了,这个字符串日期都是没有前导0的,要用d M h m,不能用dd,MM,hh,mm,地域也要定义清楚,不是en-US也不能转换

#14


hztltgg
不错不错,刚调试了下,ParseExact这个确实很强大。

#15


楼主你这个原始时间串就比较奇怪,在C#时间的对应格式中没有固定下来格式与之对应,也就没有固定可逆的格式了。所以不好弄。比如 在format为en-us的情况下,dt.ToString("g"),生成的串是4/24/2011 7:43 PM,与你那个串最接近了,不存在某个时间一位还是两位的问题。

#16


((DateTime)"2009-10-01 07:52 PM").ToString("yyyy-MM-dd HH:mm");  HH大写是24小时 小写是12小时

#17


该回复于2011-04-26 15:06:49被版主删除

#18


DateTime.TryParseExact