Files
juipnet/Infrastructure/Hncore.Infrastructure/Extension/DateTimeExtension.cs
“wanyongkang” ed3b2c653e 接口文件
2024-04-10 13:55:27 +08:00

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);
}
}
}