如何转换成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
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小时制的?
2楼的报错
不信自己试
我电脑下面显示的是24小时制的 问什么用System.DateTime.Now 读取的是12小时制的?
#4
+1
#5
+1 正解
#6
String time = "24/4/2011 pm 7:43";
DateTime dt;
DateTime.TryParse(time, out dt);
你这里转换出来就直接返回 0001-01-01 00:00
你再怎么转换不还是这个值。
DateTime dt;
DateTime.TryParse(time, out dt);
你这里转换出来就直接返回 0001-01-01 00:00
你再怎么转换不还是这个值。
#7
#8
时间就是时间,和十二小时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
+1
#11
刚才的写错了,把dt又重新赋值了一下,但确实有问题,am和pm似乎对tt不起作用,网上搜了一下,也有这种说法
#12
我也很想知道 "24/4/2011 pm 7:43"这个字符串如何转换成DateTime
ParseExact是很强大,但我调试了下,却报异常。
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这个确实很强大。
不错不错,刚调试了下,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
#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
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小时制的?
2楼的报错
不信自己试
我电脑下面显示的是24小时制的 问什么用System.DateTime.Now 读取的是12小时制的?
#4
+1
#5
+1 正解
#6
String time = "24/4/2011 pm 7:43";
DateTime dt;
DateTime.TryParse(time, out dt);
你这里转换出来就直接返回 0001-01-01 00:00
你再怎么转换不还是这个值。
DateTime dt;
DateTime.TryParse(time, out dt);
你这里转换出来就直接返回 0001-01-01 00:00
你再怎么转换不还是这个值。
#7
#8
时间就是时间,和十二小时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
+1
#11
刚才的写错了,把dt又重新赋值了一下,但确实有问题,am和pm似乎对tt不起作用,网上搜了一下,也有这种说法
#12
我也很想知道 "24/4/2011 pm 7:43"这个字符串如何转换成DateTime
ParseExact是很强大,但我调试了下,却报异常。
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这个确实很强大。
不错不错,刚调试了下,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
#18
DateTime.TryParseExact