(C# VB)UTC时间戳/时间/秒数/字节数组转换

什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用
 
参考工具网站:
https://converter.telerik.com/  c#-vb代码在线转换
https://www.cnblogs.com/huanjun/p/9473652.html  c#获取UTC转换时间戳为c#时间
 

VB代码:
Module Module1
    Sub Main()
        Dim dt As DateTime = Now
        Console.WriteLine("当前时间:" & dt.ToString())
        Console.WriteLine("秒数时间戳:" & DateToUtcSeconds(dt))
        Console.WriteLine("字节0:" & GetBytesTimeStampUTC(dt)(0))
        Console.WriteLine("字节1:" & GetBytesTimeStampUTC(dt)(1))
        Console.WriteLine("字节2:" & GetBytesTimeStampUTC(dt)(2))
        Console.WriteLine("字节3:" & GetBytesTimeStampUTC(dt)(3))
        Console.WriteLine("转回整数:" &  BytesToIntStampUTC(GetBytesTimeStampUTC(dt)))
        Console.WriteLine("重新转回时间:" &  SecondsToDateTimeStampUTC(BytesToIntStampUTC(GetBytesTimeStampUTC(dt))))
        Console.ReadKey()
    End Sub
    ''' <summary>
    ''' 给定一个时间,返回其UTC的4个字节
    ''' </summary>
    ''' <param name="thisTime"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function GetBytesTimeStampUTC(ByVal thisTime As DateTime) As  Byte()
        '给定一个时间,返回其UTC的4个字节
        Dim dEpock As DateTime = New Date(1970, 1, 1)    '最开始的时间
        Dim startTime As DateTime =  TimeZone.CurrentTimeZone.ToLocalTime(dEpock)
        Dim iSeconds As Integer = CInt((thisTime -  startTime).TotalSeconds)
        Dim bytes As Byte() = New Byte(3) {}     '注意byte(0)为最低位字节,可根据需要倒转
        bytes(0) = iSeconds And &HFF
        bytes(1) = (iSeconds And &HFF00) / &H100
        bytes(2) = (iSeconds And &HFF0000) / &H10000
        bytes(3) = (iSeconds And &HFF000000) / &H1000000 Or (((iSeconds  And &H80000000) <> 0) And &H80)
        Return bytes
    End Function
    ''' <summary>
    ''' 4字节的时间戳转换回整数秒数
    ''' </summary>
    ''' <param name="bytesUtc">字节数组,bytes(0)为最低位。如5DCFE2D9,bytes(0)=D9=217</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function BytesToIntStampUTC(ByVal bytesUtc As Byte()) As  Integer
        Dim iSecondsUTC As Integer = bytesUtc(0) + bytesUtc(1) * 256 +  bytesUtc(2) * 65536 + bytesUtc(3) * 16777216
        Return iSecondsUTC
    End Function
    ''' <summary>
    ''' UTC时间戳转换回时间形式
    ''' </summary>
    ''' <param name="iSeconds">UTC时间戳,整型 秒数</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function SecondsToDateTimeStampUTC(ByVal iSeconds As Integer)  As DateTime
        Dim StartTime As DateTime =  TimeZone.CurrentTimeZone.ToLocalTime(New DateTime(1970, 1, 1)) '起始时间
        Dim StampTime As DateTime = StartTime.AddSeconds(iSeconds) '起始时间加UTC时间戳秒数
        Return StampTime
    End Function
    ''' <summary>
    ''' 给定时间,获取其UTC时间戳
    ''' </summary>
    ''' <param name="thisTime"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function DateToUtcSeconds(ByVal thisTime As DateTime) As  Integer
        Dim dEpock As DateTime = New Date(1970, 1, 1)    '最开始的时间
        Dim startTime As DateTime =  TimeZone.CurrentTimeZone.ToLocalTime(dEpock)
        Dim iSeconds As Integer = CInt((thisTime -  startTime).TotalSeconds)
        Return iSeconds
    End Function
End Module

 


c#代码
       
 
 #region"UTC时间戳转换"
        /// <summary>
        /// 获取UTC时间戳
        /// </summary>
        /// <returns>UTC</returns>
        public static long   GetTimeStamp()
        {
            TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0,  0, 0);
            return Convert.ToInt64(ts.TotalSeconds);
            //获取毫秒时间戳:
            //TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0,  0, 0,0);
            //return Convert.ToInt64(ts.TotalMilliseconds ());
        }
        /// <summary>
        /// 转换时间戳为C#时间
        /// </summary>
        /// <param name="timeStamp">时间戳 单位:秒</param>
        /// <returns>C#时间</returns>
        public static DateTime ConvertTimeStampToDateTime(long  timeStamp)
        {
            DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new  System.DateTime(1970, 1, 1)); // 当地时区
            DateTime dt = startTime.AddSeconds(timeStamp);
            return dt;
        }
        #endregion
        static void Main(string[] args)
        {
            long seconds = GetTimeStamp();
            DateTime dt = ConvertTimeStampToDateTime(seconds);
            Console.WriteLine("当前时间:"+ DateTime.Now.ToString());
            Console.WriteLine("时间戳秒数:"+ seconds);
            Console.WriteLine("转回时间类型:"+ dt.ToString());
            
            Console.ReadKey();
        }

 

 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值