【问题标题】:Parsing a DateTime instance解析 DateTime 实例
【发布时间】:2011-04-29 17:30:29
【问题描述】:

我得到了一个包含一些时间实用方法的课程。现在我需要添加一个执行以下操作的方法:

    public static string LastUpdated(DateTime date)
    {
        string result = string.Empty;

        //check if date is sometime "today" and display it in the form "today, 2 PM"
        result = "today, " + date.ToString("t");

        //check if date is sometime "yesterday" and display it in the form "yesterday, 10 AM"
        result = "yesterday, " + date.ToString("t");

        //check if the day is before yesterday and display it in the form "2 days ago"
        result = ... etc;

        return result;
    }

有什么想法吗?

【问题讨论】:

  • 看起来你走在了正确的轨道上。是什么阻碍了你?

标签: c# .net datetime


【解决方案1】:

不久前我回答了一个类似的问题并发布了一个扩展方法:

Calculating relative dates using asp.net mvc

原文出处link

【讨论】:

  • 这不是我真正想要的。我已经有类似的功能,但你的更好一点,所以我用你的代替了我的。谢谢你:)
【解决方案2】:

嗯……你可以这样做……

if (date.Date == DateTime.Today) {
    result = "today, " + date.ToString("t");
} else if (date.Date.Day == DateTime.Today.AddDays(-1).Day) {
    result = "yesterday, " + date.ToString("t");
} else {
    result = (new TimeSpan(DateTime.Now.Ticks).Days - new TimeSpan(date.Ticks).Days) + " days ago";
}

希望对你有帮助。

【讨论】:

  • 我相信应该可以完成这项工作。谢谢你:)
【解决方案3】:

看看这个:

Calculate relative time in C#

这就是他们在 StackOverflow 中的做法。它应该能让你朝着一个好的方向前进。

【讨论】:

    【解决方案4】:

    您可以计算日期与即将到来的午夜之间的时间差,并将其作为整数天。从中很容易将其翻译成人类可读的文本:

    int days = Math.Floor((DateTime.Today.AddDays(1) - date).TotalDays);
    switch (days) {
      case 0: return "today, " + date.ToString("t");
      case 1: return "yesterday, " + date.ToString("t");
      default: return days.ToString() + " days ago";
    }
    

    注意:该开关不处理未来日期。您必须为此检查负值。

    【讨论】:

      【解决方案5】:

      我不会为你编写代码,但我会说你应该查看 TimeSpan 类,并查看 MSDN 上的 Custom Date and Time Formatting 页面,其中重点介绍了如何使用 @ 987654324@ 与 DateTime 对象。

      您应该检查日期是否大于 1 天(或 2、3 或其他),然后返回适当的字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-12
        • 2015-12-19
        • 2011-12-30
        • 1970-01-01
        • 2013-11-30
        相关资源
        最近更新 更多