获取本地时间戳
/// <summary>
/// 获取本地的Unix时间戳
/// </summary>
/// <returns></returns>
public static int GetLocalTimeStamp()
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
DateTime dtNow = DateTime.Parse(DateTime.Now.ToString());
TimeSpan toNow = dtNow.Subtract(dtStart);
string timeStamp = toNow.Ticks.ToString();
timeStamp = timeStamp.Substring(0, timeStamp.Length - 7);
int unixtime = 0;
if (int.TryParse(timeStamp, out unixtime))
{
return unixtime;
}
return unixtime;
}
1. 通过时间戳 - 获取 2016-8-12 10:07:25 时间格式
/// <summary>
/// 返回 2016-8-12 10:07:25
/// </summary>
/// <param name="time">时间戳</param>
public static string GetDataTime(long time)
{
System.DateTime dtDateTime = new System.DateTime(1970, 1, 1);
dtDateTime = dtDateTime.AddSeconds(time).ToLocalTime();
return dtDateTime.ToString("yyyy-M-d HH:mm:ss");
}
2. 通过时间戳 - 获取 (几分钟前,几小时前 等 聊天使用) 时间格式
// 通过时间戳 - 获取时间data
public static DateTime UnixTimeStampToDateTime(long unixTimeStamp)
{
System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
dtDateTime = dtDateTime.AddSeconds(unixTimeStamp).ToLocalTime();
return dtDateTime;
}
/// <summary>
/// 获取时间差desc 根据时间差获取描述,比如刚刚,1分钟前,5分钟前
/// </summary>
public static string GetChatTimeDesBySpan(long num)
{
DateTime dt = ClientTools.UnixTimeStampToDateTime(num);
TimeSpan span = DateTime.Now - dt;
if (span.TotalDays > 60)
return dt.ToLongDateString();
else if (span.TotalDays > 30)
return StringManager.GetInstance().GetValue("txt_yueqian");//一个月前
else if (span.TotalDays > 14)
return StringManager.GetInstance().GetValue("txt_bangeyueqian"); //半个月前
else if (span.TotalDays > 7)
return StringManager.GetInstance().GetValue("txt_yuzhouqian"); // 1周前
else if (span.TotalDays > 1)
return string.Format(StringManager.GetInstance().GetValue("txt_jitianqian"),(int)Math.Floor(span.TotalDays)); //{0}天前
else if (span.TotalHours > 1)
return string.Format(StringManager.GetInstance().GetValue("txt_xiaoshiqian"),(int)Math.Floor(span.TotalHours)); //{0}小时前
else if (span.TotalMinutes > 1)
return string.Format(StringManager.GetInstance().GetValue("txt_fenzhongqian"),(int)Math.Floor(span.TotalMinutes)); //{0}分钟前
else if (span.TotalSeconds > 1)
return string.Format(StringManager.GetInstance().GetValue("txt_ganggang")); //刚刚
else
return string.Format(StringManager.GetInstance().GetValue("txt_ganggang")); //刚刚
}
3. 通过时间戳 - 获取 (和现在的时间戳的差值,进行cd显示(01:00:00) 意思是 时间戳间隔是一个小时)
这个差值还有一个获取方法! 俩个时间差 减法 就是差值
int endTime = pb.value;// 倒计时结束时间
int currentServerTime = ClientTools.GetLocalTimeStamp();//当前时间
int 时间差 = endTime - currentServerTime ;
if (时间差 <= 0)
{
// 时间戳小于等于0,直接返回 "00:00:00"
return “"00:00:00"”;
}
GetTime(时间差);
static StringBuilder _TimeStrBuilder = new StringBuilder();
void GetTime(int time)
{
TimeSpan timeSpan = TimeSpan.FromSeconds(time);// 时间差
string timeStr = GetTimeSpanStr(timeSpan);// 返回 一个cd 01:00:00 比如这个,意思是间隔一个小时
}
public static string GetTimeSpanStr(TimeSpan timeSpan)
{
if (_TimeStrBuilder == null)
{
_TimeStrBuilder = new StringBuilder();
}
_TimeStrBuilder.Remove(0, _TimeStrBuilder.Length);
int tmp = (int)(timeSpan.TotalHours);
tmp = tmp >= 0 ? tmp : 0;
if (tmp < 10)
{
_TimeStrBuilder.Append("0" + tmp);
}
else
{
_TimeStrBuilder.Append(tmp);
}
if (timeSpan.Minutes < 10)
{
tmp = timeSpan.Minutes >= 0 ? timeSpan.Minutes : 0;
_TimeStrBuilder.Append(":0" + tmp);
}
else
{
tmp = timeSpan.Minutes >= 0 ? timeSpan.Minutes : 0;
_TimeStrBuilder.Append(":" + tmp);
}
if (timeSpan.Seconds < 10)
{
tmp = timeSpan.Seconds >= 0 ? timeSpan.Seconds : 0;
_TimeStrBuilder.Append(":0" + tmp);
}
else
{
tmp = timeSpan.Seconds >= 0 ? timeSpan.Seconds : 0;
_TimeStrBuilder.Append(":" + timeSpan.Seconds);
}
return _TimeStrBuilder.ToString();
}