/// <summary>/// 假定服务器机器时区为东八,配置timeString也为东八(通常服务器和配置的时区也必须一致)。利用utc相对时间差,计算出对应时间戳/// 此方法无需考虑客户端本地时区/// </summary>/// <param name="timeString">东八时区的时间字符串,格式为"HH:mm:ss"</param>private long GetTimestampByTimeStringWithZone(string timeString){// 初始化1970年1月1日0点的UTC时间,作为时间戳计算的起点DateTime startTime = new DateTime(1970, 1, 1, 8, 0, 0, DateTimeKind.Utc);// 获取服务器时间(虽然DateTimeKind.Utc,但是DateTime实际是一个东八的时间)var serverDateTime = startTime.AddMilliseconds(TimeUtils.GetServerTimestamp());// 获取服务器时间对应的星期几的数字表示(1-7),星期日为0var dayOfWeek = (int)serverDateTime.DayOfWeek;// 将服务器时间转换为指定格式的字符串,获取日期字符串string dateString = serverDateTime.ToString("yyyy-MM-dd");// 将时间字符串转换为DateTime对象DateTime dateTime = DateTime.ParseExact($"{dateString} {timeString}", "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture,DateTimeStyles.AdjustToUniversal);// 计算当前时间与起始时间的差值,并转换为秒,然后转换为长整型作为时间戳var timestamp = (long)((dateTime - startTime).TotalSeconds);return timestamp;}