【问题标题】:Convert DateTime 1/20/2022 8:48:30 PM to 20/01/2022 8:48:30 PM C#将 DateTime 1/20/2022 8:48:30 PM 转换为 20/01/2022 8:48:30 PM C#
【发布时间】:2022-02-14 06:35:16
【问题描述】:

我基本上有两个 DateTime 变量

 DateTime dateToday = WorldTimeAPI.Instance.GetCurrentDateTime();       
 DateTime dateFinish;

dateToday 从网络获取当前日期,格式为 1/20/2022 8:48:30 PM。 dateFinish 具有这种其他格式 20/01/2022 8:48:30 PM,先是天,然后是月,其他一切都相同。 我希望能够解析其中一个以在格式上与另一个匹配,这样我就可以比较它们以了解今天的日期是否大于完成日期:

if(dateToday.CompareTo(dateToEndMission) > 0)
{do stuff}

我尝试查看文档,但它有太多不同的格式,以至于我无法弄清楚确切的方法。

【问题讨论】:

  • DateTime 变量没有格式。格式在显示或转换为字符串时应用。您如何检查它们是否具有不同的格式?您在比较日期时遇到什么问题?这些日期如何获得价值?
  • 我通过调试检查,当我在运行时检查变量时,我可以通过检查 date.dayOfYear 来验证日期是否不同。问题是,我需要解析我得到的具有以下格式的字符串:“2/11/2022 6:58:55 p.m.”到“2022 年 11 月 2 日下午 6:58:55”
  • 再次:日期时间值没有格式。字符串可以。 DateTime 实际上存储为非人类可读的二进制值,当在调试器中以人类可读的方式查看它时,这只是它为您提供的便利。使用DateTime.ParseExact()将第二个字符串读入一个DateTime值,然后比较两个DateTime值,不用担心格式。

标签: c# string datetime parsing time


【解决方案1】:

要在 if 语句中比较两个 dateTime 值,您可以这样做:

if(firstDate.Date > secondDate.Date)
{
  //Do something...
}

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

尽量让事情变得简单。

如上所述,您可以使用 > 运算符比较日期时间。但我会更进一步,问你为什么使用该 api 来获取当前日期和时间,而你可以使用它

DateTime today = DateTime.Now;

这应该可以解决您的问题,因为您现在应该以相同的方式初始化日期时间。如果没有,那么我建议你看看这个其他问题的答案:

Convert DateTime to a specified Format

【讨论】:

  • 感谢您的回复,我正在使用该 API,因为就我而言,DateTime.Now 获取您的系统日期,并且用户不能更改它以使其不会干扰应用程序。
【解决方案3】:

你可以试试 ParseExact 方法

DateTime dateToday = DateTime.Now;
DateTime dateFinish = DateTime.ParseExact("20/01/2022 10:56:09", "dd/MM/yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
if (dateToday > dateFinish)
{
    // do something
}

【讨论】:

    猜你喜欢
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    相关资源
    最近更新 更多