Asp.net 算时间差 -- XXX小时前,XXX天以前,XXX分钟以前 发布

来源:互联网 发布:美国枪击案与网络恶搞 编辑:程序博客网 时间:2024/05/01 19:55

 DateTime.Parse(pubDate).ToUniversalTime()

时间格式的转换很重要!! 不然 日期格式不一致时,会计算错误!!


/// <summary>
    /// 格式化输出日期
    /// </summary>
    /// <param name="pubDate"></param>
    /// <returns>XXX小时前,XXX天以前,XXX分钟以前</returns>
    public static string FormatDateTime(string pubDate)
    {
        //string sql = string.Format("select DATEDIFF(mi,'{0}',getdate()) 'min',DATEDIFF(hh,'{0}',getdate()) 'hour',DATEDIFF(dd,'{0}',getdate()) 'day'", pubDate);


        DateTime dt1 = DateTime.Parse(pubDate).ToUniversalTime();//2005-11-5 5:21:25 
        DateTime dt2 = DateTime.Now;


        TimeSpan ts1 = new TimeSpan(dt1.Ticks);
        TimeSpan ts2 = new TimeSpan(dt2.Ticks);
        TimeSpan tsp = ts1.Subtract(ts2).Duration();


        //string dateDiff = ts.Days.ToString() + "天" + ts.Hours.ToString() + "小时" + ts.Minutes.ToString() + "分钟" + ts.Seconds.ToString() + "秒";
        //TimeSpan tsp = DateTime.Parse(DateTime.Now.ToString()) - DateTime.Parse(pubDate);
        //TimeSpan tsp = DateTime.Now.Subtract(DateTime.Parse(pubDate));


        int hr = tsp.Hours;
        int min = tsp.Minutes;
        int day = tsp.Days;
        string result = pubDate;
        if (day > 1)
        {
            return (day + "天之前");
        }


        if (hr > 1)
        {
            return (hr + "小时之前");
        }
        if (min > 1)
        {
            return (min + "分钟之前");
        }


        return result; ;
    }