177 lines
5.6 KiB
C#
177 lines
5.6 KiB
C#
using System;
|
|
|
|
namespace Hncore.Infrastructure.Extension
|
|
{
|
|
public static class DateTimeExtension
|
|
{
|
|
public static string Format(this DateTime time, string format = "yyyy-MM-dd")
|
|
{
|
|
return time.ToString(format);
|
|
}
|
|
|
|
|
|
private static DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
|
|
|
public static long CurrentTimeMillis()
|
|
{
|
|
return (long) ((DateTime.UtcNow - Jan1st1970).TotalMilliseconds);
|
|
}
|
|
|
|
public static long CurrentTimeMillis(DateTime time)
|
|
{
|
|
return (long) ((time.ToUniversalTime() - Jan1st1970).TotalMilliseconds);
|
|
}
|
|
|
|
public static string Format(this DateTime? dateTime, string format = "yyyy-MM-dd")
|
|
{
|
|
return Convert.ToDateTime(dateTime).ToString(format);
|
|
}
|
|
|
|
public static DateTime ToDateTime(this DateTime? dateTime, DateTime defaultTime)
|
|
{
|
|
if (dateTime != null)
|
|
{
|
|
return Convert.ToDateTime(dateTime);
|
|
}
|
|
|
|
return defaultTime;
|
|
}
|
|
|
|
public static bool Between(this DateTime time, DateTime beginTime, DateTime endTime)
|
|
{
|
|
return time >= beginTime && time <= endTime;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取得某月的第一天
|
|
/// </summary>
|
|
/// <param name="datetime">要取得月份第一天的时间</param>
|
|
/// <returns></returns>
|
|
public static DateTime FirstDayOfMonth(this DateTime datetime)
|
|
{
|
|
return datetime.AddDays(1 - datetime.Day);
|
|
}
|
|
|
|
/**/
|
|
/// <summary>
|
|
/// 取得某月的最后一天
|
|
/// </summary>
|
|
/// <param name="datetime">要取得月份最后一天的时间</param>
|
|
/// <returns></returns>
|
|
public static DateTime LastDayOfMonth(this DateTime datetime)
|
|
{
|
|
return datetime.AddDays(1 - datetime.Day).AddMonths(1).AddDays(-1);
|
|
}
|
|
|
|
/**/
|
|
/// <summary>
|
|
/// 取得上个月第一天
|
|
/// </summary>
|
|
/// <param name="datetime">要取得上个月第一天的当前时间</param>
|
|
/// <returns></returns>
|
|
public static DateTime FirstDayOfPreviousMonth(this DateTime datetime)
|
|
{
|
|
return datetime.AddDays(1 - datetime.Day).AddMonths(-1);
|
|
}
|
|
|
|
/**/
|
|
/// <summary>
|
|
/// 取得上个月的最后一天
|
|
/// </summary>
|
|
/// <param name="datetime">要取得上个月最后一天的当前时间</param>
|
|
/// <returns></returns>
|
|
public static DateTime LastDayOfPrdviousMonth(this DateTime datetime)
|
|
{
|
|
return datetime.AddDays(1 - datetime.Day).AddDays(-1);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取时间的Unix时间戳
|
|
/// </summary>
|
|
/// <param name="tm">时间对象</param>
|
|
/// <returns>Unix时间戳</returns>
|
|
///
|
|
public static long GetUnixTimeStamp(this DateTime tm)
|
|
{
|
|
long result = (tm.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 从Uninx转换时间
|
|
/// </summary>
|
|
/// <param name="tm">时间对象</param>
|
|
/// <param name="timeStamp">时间戳</param>
|
|
/// <returns>新时间对象</returns>
|
|
///
|
|
public static DateTime LoadFromUnixTimeStamp(this DateTime tm,double timeStamp)
|
|
{
|
|
DateTime startTime=TimeZoneInfo.ConvertTime(new System.DateTime(1970, 1, 1),TimeZoneInfo.Local);
|
|
DateTime result=startTime.AddSeconds(timeStamp);
|
|
return result;
|
|
}
|
|
|
|
public static DateTime LoadFromUnixTimeStamp(this long timeStamp)
|
|
{
|
|
DateTime startTime = TimeZoneInfo.ConvertTime(new System.DateTime(1970, 1, 1), TimeZoneInfo.Local);
|
|
DateTime result = startTime.AddSeconds(timeStamp);
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 时间戳转换成时间
|
|
/// </summary>
|
|
/// <param name="timestamp">时间戳</param>
|
|
/// <param name="millisecond">是否毫秒级,true毫秒级(默认值)</param>
|
|
/// <param name="localTime">是否输出本地时间,true本地时间(默认值)</param>
|
|
/// <returns></returns>
|
|
public static DateTime? LoadFromUnixTimeStamp(this string timestamp)
|
|
{
|
|
if (long.TryParse(timestamp, out long ts))
|
|
{
|
|
return ts.LoadFromUnixTimeStamp();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 1970 到现在的秒数
|
|
/// </summary>
|
|
/// <param name="time"></param>
|
|
/// <returns></returns>
|
|
public static int TimestampFrom19700101(this DateTime time)
|
|
{
|
|
return (int)(time - new DateTime(1970, 01, 01)).TotalSeconds;
|
|
}
|
|
|
|
|
|
#region 获取日期、明天
|
|
public static DateTime Date(this DateTime? time)
|
|
{
|
|
return Convert.ToDateTime(time).Date;
|
|
}
|
|
public static DateTime NextDate(this DateTime? time)
|
|
{
|
|
return Convert.ToDateTime(time).Date.AddDays(1);
|
|
}
|
|
public static DateTime Date(this DateTime time)
|
|
{
|
|
return time.Date;
|
|
}
|
|
public static DateTime NextDate(this DateTime time)
|
|
{
|
|
return time.Date.AddDays(1);
|
|
}
|
|
#endregion
|
|
|
|
public static DateTime Begin(this DateTime time)
|
|
{
|
|
return new DateTime(time.Year, time.Month, time.Day);
|
|
}
|
|
|
|
public static DateTime End(this DateTime time)
|
|
{
|
|
return new DateTime(time.Year, time.Month, time.Day,23,59,59);
|
|
}
|
|
}
|
|
} |