【提问】DateTime处理问题

xupeihuagudulei6 2010-05-28 01:03:17

string str = "2010年05月28日";//没有时分秒的。
DateTime dt;
DateTime.TryParse(str, out dt);
string ss;
ss = dt.Hour >= 12 ? dt.ToString("yyyy MM dd hh mm ss P\"M\"") : dt.ToString("yyyy MM dd hh mm ss A\"M\"");//经过这样转换之后结果会变成2010 05 28 12 00 00 AM.分明没有小时的。为什么经过处理就多了出来。郁闷
Label1.Text = ss;
...全文
288 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
马老虎 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 mmm306306 的回复:]

引用 14 楼 mmm306306 的回复:

我也是刚搞明白!
yyyy MM dd HH mm ss

http://msdn.microsoft.com/zh-cn/library/8kb3ddd4%28VS.80%29.aspx

h


将小时表示为从 1 至 12 的数字,即通过 12 小时制表示小时,自午夜或中午开始对整小时计数。因此,午夜后经过的某特定小时数与……
[/Quote]
小写h 是 12计时法
大写H 是 24计时法
马老虎 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 mmm306306 的回复:]

我也是刚搞明白!
yyyy MM dd HH mm ss

http://msdn.microsoft.com/zh-cn/library/8kb3ddd4%28VS.80%29.aspx
[/Quote]
h


将小时表示为从 1 至 12 的数字,即通过 12 小时制表示小时,自午夜或中午开始对整小时计数。因此,午夜后经过的某特定小时数与中午过后的相同小时数无法加以区分。小时数不进行舍入,一位数字的小时数设置为不带前导零的格式。例如,给定时间为 5:43,则此格式说明符显示“5”。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。

hh, hh(另加任意数量的“h”说明符)


将小时表示为从 01 至 12 的数字,即通过 12 小时制表示小时,自午夜或中午开始对整小时计数。因此,午夜后经过的某特定小时数与中午过后的相同小时数无法加以区分。小时数不进行舍入,一位数字的小时数设置为带前导零的格式。例如,给定时间为 5:43,则此格式说明符显示“05”。

H


将小时表示为从 0 至 23 的数字,即通过从零开始的 24 小时制表示小时,自午夜开始对小时计数。一位数字的小时数设置为不带前导零的格式。

HH, HH(另加任意数量的“H”说明符)


将小时表示为从 00 至 23 的数字,即通过从零开始的 24 小时制表示小时,自午夜开始对小时计数。一位数字的小时数设置为带前导零的格式。
pgameli 2010-05-28
  • 打赏
  • 举报
回复
不用格式化,太麻烦了,直接这样写
string+"00:00:00"
马老虎 2010-05-28
  • 打赏
  • 举报
回复
我也是刚搞明白!
yyyy MM dd HH mm ss

http://msdn.microsoft.com/zh-cn/library/8kb3ddd4%28VS.80%29.aspx

丰云 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xupeihuagudulei6 的回复:]
咋就没人理解我的意思呢
[/Quote]
不是别人不理解你的意思,
是你自己局限在自己的思维小圈里没跳出来
丰云 2010-05-28
  • 打赏
  • 举报
回复
要分AM/PM的。
人家这样默认设置是为了方便大家使用,
你自己不习惯而已!
习惯就好啦
xupeihuagudulei6 2010-05-28
  • 打赏
  • 举报
回复
咋就没人理解我的意思呢
xupeihuagudulei6 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 foren_whb 的回复:]

你的代码逻辑本身就有问题,
既然string str = "2010年05月28日";
不带时间,
又怎么能在下面做dt.Hour >= 12 ?
这种判断呢??

给你一段我项目里用的代码,
var tmpDateTime = new DateTime(Convert.ToInt32(xxx.Substring(6, 4)), Convert.ToInt32(xxx.Subst……
[/Quote]既然本身不带,默认就是0的嘛。0去和 12判断有什么关系呢?
丰云 2010-05-28
  • 打赏
  • 举报
回复
你的代码逻辑本身就有问题,
既然string str = "2010年05月28日";
不带时间,
又怎么能在下面做dt.Hour >= 12 ?
这种判断呢??

给你一段我项目里用的代码,
var tmpDateTime = new DateTime(Convert.ToInt32(xxx.Substring(6, 4)), Convert.ToInt32(xxx.Substring(3, 2)), Convert.ToInt32(xxx.Substring(0, 2)), 0, 0, 0);
yangtao7754 2010-05-28
  • 打赏
  • 举报
回复
xupeihuagudulei6 2010-05-28
  • 打赏
  • 举报
回复
不可能是区域设置原因。
DateTime.TryParse(str, out dt);这句话的时候显示的就是0时0分0秒的
可是经过下面的三元表达式之后。时间同样也是0时0分0秒的。但是转换之后的那个ss就变成12小时的。
xupeihuagudulei6 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 idot 的回复:]

和你控制面板里的区域设置有关
[/Quote]能否通过程序控件。没有时分秒就直接0 好了。何必还搞个12小时呢,郁闷。
idot 2010-05-28
  • 打赏
  • 举报
回复
和你控制面板里的区域设置有关
xupeihuagudulei6 2010-05-28
  • 打赏
  • 举报
回复
正确的结果应该是出现 2010 05 28 00 00 00 AM,可是它现在是2010 05 28 12 00 00 AM.小时变成12了
xupeihuagudulei6 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qq865926998 的回复:]

把hh mm ss去掉呢
[/Quote]去掉当然不会出时分秒啊
我是想让它出现时分秒
可是经过那句话之后小时那里竟然变成 12了。囧~!
QQ865926998 2010-05-28
  • 打赏
  • 举报
回复
把hh mm ss去掉呢
kevin_medsoft 2010-05-28
  • 打赏
  • 举报
回复
因为DateTime是一个Struct类型,Hour,Second 都是它的一个属性,会有默认值 0

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧