我正在尝试比较当前时间,看它是否过了16小时(下午4点)
int temps = new TimeSpan(16, 0, 0).Hours;
int now = DateTime.Now.TimeOfDay.Hours;
int result=1;
if (now > temps)
result = 2;
但如果我希望{14}显示像这样14小时或15小时而不必这样做
now
因为我需要将它与now.ToString("MM/dd/yyyy HH:mm")
进行比较,所以我需要它作为整数
有可能吗?我的所有研究都建议我使用字符串格式
我试过:temps
显示17小时,但问题是它是在英国和我住在加拿大的时间
答案 0 :(得分:2)
DateTime
始终以相同的方式在内部存储,无论它如何显示。无论何时看到日期,都意味着已经转换为字符串并进行格式化。即使在调试器中!您看到的只是存储为数字的真实 DateTime
的临时表示。
Hour属性的值始终使用24小时制表示。
此真实DateTime
在内部存储为自参考日期起经过的时间。 DateTime Structure的文档说:
时间值以称为刻度线的100纳秒单位测量,特定日期是GregorianCalendar日历中自公元0001年1月1日午夜12:00起的刻度数(不包括将添加的刻度)闰秒)。例如,刻度值31241376000000000L表示日期,星期五,1月1日,0100 12:00:00午夜。
你可以写
int now = DateTime.Now.Hour; // Always expressed using a 24-hour clock.
int result = 1;
if (now > 16)
result = 2;
或更简洁
int result = DateTime.Now.Hour > 16 ? 2 : 1;
如果您想要当地时间,请不要使用NowUTC
。这产生了曾经被称为Greenwich Mean Time (GMT)的东西。