闲来没事做了一个类似于发微博的小Demo,其中有需要绑定时间的地方,我想实现跟腾讯微博上显示时间的方式差不多,于是到网上搜了一下TimeSpan类,然后我自己把算法写了一下与大家共享啊,没什么技术含量,只是分享,高手直接路过。直接贴代码吧!
/// <summary> /// 求当前与发表时间的差值 /// </summary> /// <param name="dt1">当前时间</param> /// <param name="dt2">需要比较的时间</param> /// <returns></returns> public string TimeChaZhi(DateTime dt1, DateTime dt2) { TimeSpan sj1 = new TimeSpan(dt1.Ticks); TimeSpan sj2 = new TimeSpan(dt2.Ticks); TimeSpan sj = sj1.Subtract(sj2).Duration(); int day = sj1.Days - sj2.Days; if (day > 3) { return Convert.ToDateTime(dt2).ToString("M月d日 HH:mm"); } else if (day != 0) { if (day == 1) { return "昨天" + " " + Convert.ToDateTime(dt2).ToString("HH:mm"); } else if (day == 2) { return "前天" + " " + Convert.ToDateTime(dt2).ToString("HH:mm"); } else { return day.ToString() + "天前"; } } else if (sj.Hours != 0) { //24小时之间 if (Convert.ToInt32(dt1.Day) == Convert.ToInt32(dt2.Day)) { return "今天" + " " + Convert.ToDateTime(dt2).ToString("HH:mm"); } else { return "昨天" + " " + Convert.ToDateTime(dt2).ToString("HH:mm"); } } else if (sj.Minutes != 0) { return sj.Minutes.ToString() + "分钟前"; } else if (sj.Seconds < 20) { return "刚刚"; } else { return sj.Seconds.ToString() + "秒前"; } }
http://soaspx.com/dotnet/asp.net/tech/tech_20120229_8675.html