net core 时间戳获取
在 .net 4.6 和 .net core 下, DateTimeOffset 新增了一个 ToUnixTimeSeconds() 方法,可以直接获取时间戳。
DateTimeOffset dto = new DateTimeOffset(DateTime.Now); var unixTime = dto.ToUnixTimeSeconds();
扩展:
/// <summary> /// 时间戳转本地时间 /// </summary> public static DateTime ToLocalTimeTime(this long unix, bool allowZero = false) { if (!allowZero && unix <= 0) throw new ArgumentException("时间戳值为 0 。", nameof(unix)); var dto = DateTimeOffset.FromUnixTimeSeconds(unix); return dto.ToLocalTime().DateTime; } /// <summary> /// 时间戳转本地时间 /// </summary> public static DateTime ToLocalTimeTime(this long unix) { var dto = DateTimeOffset.FromUnixTimeSeconds(unix); return dto.ToLocalTime().DateTime; } /// <summary> /// 时间转时间戳转 /// </summary> public static long ToUnixTimestamp(this DateTime dt) { DateTimeOffset dto = new DateTimeOffset(dt); return dto.ToUnixTimeSeconds(); }
原 NFX 下 获取和转换:
/// <summary> /// 转换为时间戳 /// </summary> public static long ToUnixtime(this DateTime dt) { var start = new DateTime(1970, 1, 1); return (long)dt.ToUniversalTime().Subtract(start).TotalSeconds; } /// <summary> /// 转时间 /// </summary> public static DateTime ToDateTime(this long unix) { if (unix <= 0) return DateTime.MinValue; var start = new DateTime(1970, 1, 1); return start.AddSeconds(unix).ToLocalTime(); }
Categories:
.net
Tags:
net core
已禁用评论。