En este articulo os hablare de como calcular el famoso tiempo transcurrido o time ago en c# , el time ago suele usarse en aplicaciónes sociales como twitter o facebook para indicarnos hace cuanto tiempo sucedio una publicación en nuestro timeline.

Función en c# para calcurar el time ago

        /// <summary>
        /// Función que devuelve un string con el formato "time ago" usado en aplicaciones como twitter
        /// </summary>
        /// <param name="fechadesde">Fecha anterior</param>
        /// <param name="fechahasta">Normalmente la fecha actual</param>
        /// <returns></returns>
        public static string GetTimeAgo(DateTime fechadesde, DateTime fechahasta)
        {
            //Comprobamos si la fechahasta es mayor que la fechadesde
            if (DateTime.Compare(fechahasta, fechadesde) >= 0)
            {
                TimeSpan ts = fechahasta.Subtract(fechadesde);

                if (ts.Days >0)
                {
                    if (ts.Days > 1)
                    {
                        return (ts.Days + " días antes");
                    }
                    else
                    {
                        return (ts.Days + " día antes");
                    }
                }
                else
                {

                    if (ts.Hours > 0)
                    {
                        if (ts.Hours > 1)
                        {
                            return (ts.Hours + " horas antes");
                        }
                        else
                        {
                            return (ts.Hours + " hora antes");
                        }
                    }
                    else
                    {
                        if (ts.Minutes > 0)
                        {
                            if (ts.Minutes > 1)
                            {
                                return (ts.Minutes + " minutos antes");
                            }
                            else
                            {
                                return (ts.Minutes + " minuto antes");
                            }
                        }
                        else
                        {
                            if (ts.Seconds > 0)
                            {
                                if (ts.Seconds > 1)
                                {
                                    return (ts.Seconds + " segundos antes");
                                }
                                else
                                {
                                    return (ts.Seconds + " segundo antes");
                                }
                            }

                        }

                    }
                }
                return "Compruebe las fechas";
            }
            else
            {

                return "Compruebe las fechas";

            }
        }

Como siempre para vuestra comodidad tambien os la dejo disponible en pastebin.

La inspiración de este articulo me vino del el excelente artículo de Alfredo Artiles sobre Fechas en formato tiempo transcurrido(time ago) con PHP