C# 时间戳(TimeStamp)与时间(DateTime)的互相转换
时间戳是指从格林威治时间(UTC)1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
文章共1,584字 · 阅读需要大约6分钟
一键AI生成摘要,助你高效阅读
问答
·
.NET Standard 2.0 通用扩展库!
开箱即用。
Nuget地址
:https://www.nuget.org/packages/Sesy
Gitee地址
:https://gitee.com/sesy/sesy
一、时间戳是什么
时间戳是指从格林威治时间(UTC)1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
二、时间戳的优势
精确度高
:时间戳能够记录精确到秒、毫秒、甚至微秒的时间,相比人类的日期时间表示方式更加精确。可跨平台
:时间戳是一种标准的时间表示方式,不受不同操作系统、程序语言等因素的影响,可以方便地跨平台传输和处理。计算简便
:时间戳是一个数字,可以直接进行比较、计算和排序。存储节省
:时间戳是一个数值类型,相比日期时间类型,可以节省存储空间。兼容性好
:时间戳可以和其他数据类型进行转换。
三、C#代码实现
1.取当前时间戳
/// <summary>
/// 取当前时间的时间戳,高并发情况下会有重复。想要解决这问题请使用加锁或其他方式。
/// </summary>
/// <param name="accurateToMilliseconds">是否精确到毫秒</param>
/// <returns>返回long类型时间戳</returns>
public static long GetTimeStamp(bool accurateToMilliseconds = false)
{
if (accurateToMilliseconds)
{
return DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
}
else
{
return DateTimeOffset.UtcNow.ToUnixTimeSeconds();
}
}
static void Main(string[] args)
{
// 1700227312 精确到秒的时间戳 长度为10
Console.WriteLine(GetTimeStamp(false));
// 1700227312509 精确到毫秒的时间戳 长度为13
Console.WriteLine(GetTimeStamp(true));
}
2.取指定时间戳
/// <summary>
/// 取指定时间的时间戳
/// </summary>
/// <param name="accurateToMilliseconds">是否精确到毫秒</param>
/// <returns>返回long类型时间戳</returns>
public static long GetTimeStamp(DateTime dateTime, bool accurateToMilliseconds = false)
{
if (accurateToMilliseconds)
{
return new DateTimeOffset(dateTime).ToUnixTimeMilliseconds();
}
else
{
return new DateTimeOffset(dateTime).ToUnixTimeSeconds();
}
}
static void Main(string[] args)
{
// 1700227312 精确到秒的时间戳 长度为10
Console.WriteLine(GetTimeStamp(DateTime.Now, false));
// 1700227312509 精确到毫秒的时间戳 长度为13
Console.WriteLine(GetTimeStamp(DateTime.Now, true));
}
3.时间戳转时间
/// <summary>
/// 指定时间戳转为时间。
/// </summary>
/// <param name="timeStamp">需要被反转的时间戳</param>
/// <param name="accurateToMilliseconds">是否精确到毫秒</param>
/// <returns>返回时间戳对应的DateTime</returns>
public static DateTime GetTime(long timeStamp, bool accurateToMilliseconds = false)
{
if (accurateToMilliseconds)
{
return DateTimeOffset.FromUnixTimeMilliseconds(timeStamp).LocalDateTime;
}
else
{
return DateTimeOffset.FromUnixTimeSeconds(timeStamp).LocalDateTime;
}
}
static void Main(string[] args)
{
// 2023/11/17 21:21:52
Console.WriteLine(GetTime(1700227312, false));
// 2023/11/17 21:21:52
Console.WriteLine(GetTime(1700227312509, true));
}
更多推荐
已为社区贡献1条内容
所有评论(0)