C#获取当前时间戳

  1. 获取当前的毫秒时间戳
    /// <summary>
    /// 获取当前的毫秒时间戳
    /// </summary>
    /// <returns></returns>
    public static long Timestamp()
    {
        long ts = ConvertDateTimeToInt(DateTime.Now);
        return ts;
    }
    
    /// <summary>
    /// 将c# DateTime时间格式转换为Unix时间戳格式
    /// </summary>
    /// <param name="time">时间</param>
    /// <returns>long</returns>
    public static long ConvertDateTimeToInt(System.DateTime time)
    {
        //System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
        //long t = (time.Ticks - startTime.Ticks) / 10000;   //除10000调整为13位
        long t = (time.Ticks - 621356256000000000) / 10000;
        return t;
    }

时间戳转换16进制byte数组

  1. 首先将时间戳转换16进制字符串
    // 获取时间戳
    long timeStamp = Public.Timestamp() / 1000;// 精确到秒
    string str = timeStamp.ToString("X4"); // 10进制转换16进制,并且少于4位补全0
  2. 16进制时间戳字符串转换成16进制byte数组
    /// <summary>
    /// 16进制字符串转换成16进制byte数组
    /// </summary>
    /// <param name="hexString"></param>
    /// <returns></returns>
    public static byte[] strToHexByte(string hexString)
    {
    		hexString = hexString.Replace(":", "");
    		if ((hexString.Length % 2) != 0)
    		hexString += " ";
    		byte[] returnBytes = new byte[hexString.Length / 2];
    		for (int i = 0; i < returnBytes.Length; i++)
    		returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
    		return returnBytes;
    }

最后使用

// 获取时间戳
long timeStamp = Public.Timestamp() / 1000; // 精确到秒
string str = timeStamp.ToString("X4"); // 10进制转换16进制,并且少于4位补全0
byte[] b = Public.strToHexByte(str);