public class DateTimeHelper
{
/// <summary>
/// 将时间转换成长整形秒数
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static long GetTimeMilliseconds(DateTime time)
{
return (long)time.Subtract(new DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds;
}
/// <summary>
/// 将秒数转换成日期
/// </summary>
/// <param name="seconds"></param>
/// <returns></returns>
public static DateTime GetTime(long milliseconds)
{
return new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(milliseconds);
}
/// <summary>
/// 换算计算时间为字符串:今天,昨天等
/// </summary>
/// <param name="milliseconds"></param>
/// <param name="lang"></param>
/// <returns></returns>
public static string GetTimeString(long milliseconds, string lang = "zh")
{
var time = GetTime(milliseconds);
var now = DateTime.Now;
TimeSpan timespan = now - time;
switch (lang)
{
case "en":
#region 英文
if (timespan < new TimeSpan(0, 0, 0))
{
//未来(一般是不会存在的)
if (time.Date == now.Date)
{
// 一天以内
return "Today" + time.ToString(" HH:mm"); // Today
}
if (time.Date == now.Date.AddDays(1))
{
// 一天以内
return "Tomorrow" + time.ToString(" HH:mm"); // Tomorrow
}
if (time.Year == now.Year)
{
// 一年内
return time.ToString("MM-dd HH:mm");
}
return time.ToString("yyyy-MM-dd HH:mm");
}
if (timespan < new TimeSpan(0, 1, 0))
{
return "Just Now";//1分钟内
}
if (timespan < new TimeSpan(1, 0, 0))
{
return timespan.Minutes + (timespan.Minutes == 1 ? " minute ago" : " mins ago");//1小时以内
}
if (time.Date == now.Date)
{
return "Today" + time.ToString(" HH:mm");//同一天
}
if (time.Date == now.AddDays(-1).Date)
{
return "Yesterday" + time.ToString(" HH:mm");//昨天
}
if (time.Year == now.Year)
{
return time.ToString("MM-dd HH:mm");//一年内
}
return time.ToString("yyyy-MM-dd HH:mm");
#endregion
default:
#region 中文
if (timespan < new TimeSpan(0, 0, 0))
{
//未来(一般是不会存在的)
if (time.Date == now.Date)
{
// 一天以内
return "今天" + time.ToString(" HH:mm"); // Today
}
if (time.Date == now.Date.AddDays(1))
{
// 一天以内
return "明天" + time.ToString(" HH:mm"); // Tomorrow
}
if (time.Year == now.Year)
{
// 一年内
return time.ToString("MM-dd HH:mm");
}
return time.ToString("yyyy-MM-dd HH:mm");
}
if (timespan < new TimeSpan(0, 1, 0))
{
return "刚刚";//1分钟内
}
if (timespan < new TimeSpan(1, 0, 0))
{
return timespan.Minutes + "分钟前";//1小时以内
}
if (time.Date == now.Date)
{
return "今天" + time.ToString(" HH:mm");//同一天
}
if (time.Date == now.AddDays(-1).Date)
{
return "昨天" + time.ToString(" HH:mm");//昨天
}
if (time.Year == now.Year)
{
return time.ToString("MM-dd HH:mm");//一年内
}
return time.ToString("yyyy-MM-dd HH:mm");
#endregion
}
}
/// <summary>
/// 计算年龄
/// </summary>
/// <param name="birthday"></param>
/// <returns></returns>
public static int GetAge(long birthday)
{
try
{
var time = GetTime(birthday);
var y = Convert.ToInt32(DateTime.Now.Year - time.Year);
var m = Convert.ToInt32(DateTime.Now.Month - time.Month);//比较月份大小
var d = Convert.ToInt32(DateTime.Now.Date - time.Date);//比较日期大小
int age = y;
if (m < 0)
{
age = age - 1;
}
else if (m == 0)
{
if (d < 0)
{
age = age - 1;
}
}
return age;
}
catch (Exception)
{
return 18;
}
}
}