using System;
using System.Collections.Generic;
using System.Text;
namespace TEAMModelOS.SDK.Helper.Common.DateTimeHelper
{
public static class DateTimeHelper
{
///
/// 时间戳转换为日期(时间戳单位秒)
///
///
///
public static DateTime ConvertToDateTime(long timeStamp)
{
var dtStart = TimeZoneInfo.ConvertTimeToUtc(new DateTime(1970, 1, 1));
TimeSpan toNow = new TimeSpan(timeStamp);
return dtStart.Add(toNow);
//var start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
//return start.AddMilliseconds(timeStamp).AddHours(8);
}
///
/// 日期转换为时间戳(时间戳单位秒)
///
///
///
public static long ConvertToTimeStamp13(DateTime time)
{
DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
return (long)(time.AddHours(-8) - Jan1st1970).TotalMilliseconds;
}
///
/// 日期转换为时间戳(时间戳单位秒)
///
///
///
public static long ConvertToTimeStamp10(DateTime time)
{
DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
return (long)(time.AddHours(-8) - Jan1st1970).TotalMilliseconds / 1000;
}
public static DateTime FromUnixTimestamp(this long unixtime)
{
DateTime sTime = TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1), TimeZoneInfo.Utc, TimeZoneInfo.Local);
return sTime.AddMilliseconds(unixtime);
}
public static DateTime FromUnixTimestampOffSet(this long unixtime, int offset)
{
DateTime sTime = TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1), TimeZoneInfo.Utc, TimeZoneInfo.Local);
int serverOffset = (int)TimeZoneInfo.Local.GetUtcOffset(DateTime.Now).TotalMinutes;
int subOffset = offset - serverOffset;
return sTime.AddMilliseconds(unixtime).AddMinutes(subOffset);
}
public static long ToUnixTimestamp(this DateTime datetime)
{
//DateTime sTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
DateTime sTime = TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1), TimeZoneInfo.Utc, TimeZoneInfo.Local);
return (long)(datetime - sTime).TotalMilliseconds;
}
///
/// 获取当前cpu振荡时间戳 17位数
///
///
public static long GetCPUMillisecond()
{
return DateTime.Now.ToUniversalTime().Ticks - 621355968000000000;
}
///
/// 获取标准毫秒级时间戳 13位数
///
///
public static long GetMillisecond()
{
return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000;
}
///
/// 获取当前年
///
///
public static int GetCurrentYear()
{
return DateTime.Now.Year;
}
///
/// 获取当前月份
///
///
public static int GetCurrentMonth()
{
return DateTime.Now.Month;
}
///
/// 获取星期几
///
///
public static DayOfWeek GetCurrentDayOfWeek()
{
return DateTime.Now.DayOfWeek;
}
///
/// 获取本年第几天
///
///
public static int GetCurrentDayOfYear()
{
return DateTime.Now.DayOfYear;
}
///
/// 获取当前小时
///
///
public static int GetCurrentHour()
{
return DateTime.Now.Hour;
}
///
/// 获取当前分钟
///
///
public static int GetCurrentMinute()
{
return DateTime.Now.Minute;
}
///
/// 获取当前秒
///
///
public static int GetCurrentSecond()
{
return DateTime.Now.Second;
}
///
/// 获得 GMT+8 时间
///
///
public static DateTime ChinaTime()
{
TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("China Standard Time");//设置时区
DateTime easternTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, easternZone);
return easternTime;
}
}
}