写一个方法,要是这样的,方法返回的是字符串类型的提示语,例如:
2008-11-18 5:18:46.177 要这样显示: 今天5时
2008-11-17 6:07:15.177 要这样显示: 昨天6时
2008-11-16 9:26:36.177 要这样显示: 前天9时
2008-11-15 9:18:50.177 超过前天的就显示年月日,即显示: 2008-11-15
...
    private string toFolksyDate(DateTime pTime)
    {
        ......
        return pTime.ToString("yy-MM-dd");
    }.net刚学,有些数据类型这块的加减法都没搞懂,请诸各抒已见帮一下

解决方案 »

  1.   

    DateTime dtNow = DateTime.Now;
    DateTime yesterday = dtNow.AddDays(-1);
    DateTime dayBeforeYesterday = dtNow.AddDays(-2);
    TimeSpan ts = (dtNow - yesterday);ts.Days;ts.Hours
      

  2.   

    //给你写其中一种情况(最后一种),其他的你自己实现一下。。
    private string GetString(DateTime dt)
    {
      if(dt<DateTime.Nos.AddDays(-2).Date) return dt.ToString("yyyy-MM-dd");
      else
      {
       ...
       return ...
      }
    }
      

  3.   

    DateTime.Now.AddDays(-2).Date不好意思,敲错了一个字母。。
      

  4.   

        private string ConvertDay(DateTime vTime)
        {
            DateTime nowtime = DateTime.Now;
            //DateTime yesterday = nowtime.AddDays(-1);
            //DateTime dayBeforeYesterday = nowtime.AddDays(-2);
            TimeSpan ts = nowtime - vTime;
            if (ts.Days == 0)
            {
                return "今天" + vTime.ToString("hh") + "时";
            }
            else if (ts.Days == 1)
            {
                return "昨天" + vTime.ToString("hh") + "时";
            }
            else if (ts.Days == 0)
            {
                return "前天" + vTime.ToString("hh") + "时";
            }
            else
            {
                return vTime.ToString("yy-MM-dd");
            }
            //return ts.Days.ToString();
        }我根据一楼的bloodish给了点启发,但这样写出来貌似应该是对的...
    但当我代入
    2008-11-17 21:21:51  显示:今天09时
    2008-11-17 9:43:10   显示:昨天09时这显然不正确啊,再帮忙看看...   :)
      

  5.   

    我用笨方法写了一个
        private string ConvertDay(DateTime vTime)
        {
            DateTime nowtime = DateTime.Now;
            if (vTime.ToString("yy-MM-dd") == nowtime.ToString("yy-MM-dd"))
            {
                return "今天" + vTime.ToString("hh") + "时";
            }
            else if (vTime.ToString("yy-MM-dd") == nowtime.AddDays(-1).ToString("yy-MM-dd"))
            {
                return "昨天" + vTime.ToString("hh") + "时";
            }
            else if (vTime.ToString("yy-MM-dd") == nowtime.AddDays(-2).ToString("yy-MM-dd"))
            {
                return "前天" + vTime.ToString("hh") + "时";
            }
            else
            {
                return vTime.ToString("yy-MM-dd");
            }
        }
      

  6.   

    return "今天" + vTime.ToString("hh") + "时"; 
    这里hh改成HH就好了。
      

  7.   

    之前第一个并不妥,不光是输出的小时进制有问题而且居然17号的不同小时时间显示的都是今天2008-11-17 21:21:51  显示:今天09时 
    2008-11-17 9:43:10  显示:昨天09时 ----->这里错了....以下是综合楼上的热心朋友给到的意见写成的,也不知道是不是最优化的...请诸位指教private string ConvertDay(DateTime vTime)
        {
            DateTime nowtime = DateTime.Now;
            TimeSpan ts = nowtime.Date-vTime.Date;// ------------------>这里是综合min_jie的意见
            if (ts.Days == 0)
            {
                return "今天" + vTime.ToString("HH") + "时";
            }
            else if (ts.Days == 1)
            {
                return "昨天" + vTime.ToString("HH") + "时";
            }
            else if (ts.Days == 2)
            {
                return "前天" + vTime.ToString("HH") + "时";
            }
            else
            {
                return vTime.ToString("yy-MM-dd");
            }
            //return ts.Days.ToString(); 
        }
      

  8.   


    可以。。如果你想把09时的0去掉的话,还可以只用一个H
    当然,如果写成switch的话代码会更直观一些。。
      

  9.   


    呵,以前我同事说switch运行效率不高,不知是真还是假,所以我在心里就养成的一种屏蔽的习惯了。因为我这里用在repeater控件中的对数据库中的数据进行显示,固然数据量很大,所以我选择用if了.嗯,若是一般的调用在这里用switch是个不错的选择,谢谢min_jie
      

  10.   

    用一个H时就报错呢... “/”应用程序中的服务器错误。
    --------------------------------------------------------------------------------输入字符串的格式不正确。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.FormatException: 输入字符串的格式不正确。源错误: 
    行 311:        else if (ts.Days == 1)
    行 312:        {
    行 313:            return "昨天" + vTime.ToString("H") + "时";
    行 314:        }
    行 315:        else if (ts.Days == 2)
     
      

  11.   


    当格式化字符是单个字符时,必须是以下的字符,否则就会异常。。d 
     ShortDatePattern
     

     LongDatePattern
     

     完整日期和时间(长日期和短时间) 
     

     FullDateTimePattern(长日期和长时间) 
     

     常规(短日期和短时间) 
     

     常规(短日期和长时间) 
     
    m、M 
     MonthDayPattern
     
    o、O 
     往返日期/时间模式;在这种格式模式下,格式设置或分析操作始终使用固定区域性
     
    r、R 
     RFC1123Pattern;在这种格式模式下,格式设置或分析操作始终使用固定区域性
     

     使用本地时间的 SortableDateTimePattern(基于 ISO 8601);在这种格式模式下,格式设置或分析操作始终使用固定区域性
     

     ShortTimePattern
     

     LongTimePattern
     

     使用通用时间显示格式的 UniversalSortableDateTimePattern;在这种格式模式下,格式设置或分析操作始终使用固定区域性 
     

     使用通用时间的完整日期和时间(长日期和长时间) 
     
    y、Y 
     YearMonthPattern
     
      

  12.   

    改成return "今天" + vTime.Hour+ "时";