【问题标题】:DateTime trying to set AM/PM for the DateDateTime 尝试为日期设置 AM/PM
【发布时间】:2014-06-16 20:54:14
【问题描述】:

谁能帮我设置日期的最后一部分 AM/PM 部分。我正在使用 C# 项目,这是我目前所拥有的:

DateTime startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 00, 00, 00);
or
new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 11, 59, 59);

我在哪里设置上午或下午

因为当我尝试使用以下内容打印 DateTime 时:

 startDate.ToString("MM/dd/yy HH:mm:ss tt")

我明白了

06/13/14 00:00:00 AM 
06/16/14 11:59:59 AM 

为什么我在这两种情况下都得到 AM???对编码器的任何建议或改进都是更好的方法。

我想设置 DateTime,然后手动添加 PM 或 AM 部分。

【问题讨论】:

  • 谢谢大家。我会选择 DateTime.Now.Day, 23, 59, 59
  • 我认为你不能这样做,因为它不是 ISO 日期时间格式。

标签: c# visual-studio datetime output


【解决方案1】:

“AM”和“PM”是显示格式的一部分,它们不是设置数据本身。注意你设置的时间:

... 00, 00, 00 ...
... 11, 59, 59 ...

这两个时间都是上午时间。一个是午夜,另一个是中午前一秒。

如果您想要中午或 11:59:59 PM,那么您需要将小时设置为 12 或 23:

... 12, 00, 00 ...
... 23, 59, 59 ...

然后,您要求显示 12 小时的输出格式将显示您要查找的时间。

时间的存储没有任何人类可读的格式。在低级别,它们只是整数。稍高一点,它们是一天 24 小时。实际上,没有任何东西存储时间是 12 小时格式。这只是显示问题。

【讨论】:

  • 谢谢,我没有意识到这一点。现在修复它。
【解决方案2】:

这种情况下无需手动设置时间:

DateTime startDate = DateTime.Today;
DateTime endDate = startDate.AddDays(1).AddSeconds(-1);

另外,请确保您不是从 ASP.Net Web 应用程序执行此操作。您的网络服务器的“现在”或“今天”可能与查看您网站的人的不同。 More on this here.

【讨论】:

  • 我喜欢这个。非常聪明!
  • 另外,你没有说为什么你想要23:59:59。通常最好在第二天使用午夜并使用< 而不是<=。您不想排除 23:59:59.123。
猜你喜欢
  • 1970-01-01
  • 2011-12-29
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多