C# 如何倒计时,开始时间和结束时间通过服务器来算,在客户端上是统一的

时间:2022-03-12 01:36:43
上网下载多个JS实例,效果不错,有结束时间,但没有开始的时间,放到服务器无法让客户端的时间都同步,请教好心人,帮忙,解决这个问题。

12 个解决方案

#1


该回复于2015-08-15 00:06:18被版主删除

#2


客户端在任何时候都可以去服务器获得与服务器的时间精确差(例如可以使用“简化的ntp算法”),然后客户端的目标时间就应该修正。例如客户端比服务器时间慢2分钟20秒,那么客户端的结束时间就应该比预计的结束时间提前2分20秒。

#3


服务器设置一个定时器,客户端都去读这个时间

#4


该回复于2015-08-15 00:06:18被版主删除

#5


所谓"倒计时",绝逼不是用个timer每秒减去1
而是你已经知道了结束时间,那么用当前时间减去结束时间就是剩余时间了,这是最准确的,不会出现任何误差的方法

你纠结的不过是客户机时间和服务器时间不同步而已,获取一下服务器时间,然后计算和客户机时间的时间差不就得了

#6


引用 5 楼 Z65443344 的回复:
所谓"倒计时",绝逼不是用个timer每秒减去1
而是你已经知道了结束时间,那么用当前时间减去结束时间就是剩余时间了,这是最准确的,不会出现任何误差的方法

你纠结的不过是客户机时间和服务器时间不同步而已,获取一下服务器时间,然后计算和客户机时间的时间差不就得了

嗯,这个思路我想到了,获取服务器时间和获取客户端时间可以做到,后面的步骤不知道该怎么做,服务器时间我用的SQL语句,客户端的时间用的是getdate(),计算时间差,后面的内容不知道该如何做

#7


引用 2 楼 sp1234 的回复:
客户端在任何时候都可以去服务器获得与服务器的时间精确差(例如可以使用“简化的ntp算法”),然后客户端的目标时间就应该修正。例如客户端比服务器时间慢2分钟20秒,那么客户端的结束时间就应该比预计的结束时间提前2分20秒。

从你的回答可以感觉到你是个高手,我用的方法去试试看、

#8


引用 7 楼 lj646333972 的回复:
Quote: 引用 2 楼 sp1234 的回复:

客户端在任何时候都可以去服务器获得与服务器的时间精确差(例如可以使用“简化的ntp算法”),然后客户端的目标时间就应该修正。例如客户端比服务器时间慢2分钟20秒,那么客户端的结束时间就应该比预计的结束时间提前2分20秒。

从你的回答可以感觉到你是个高手,我用的方法去试试看、

计算时间差要怎么做呢?,客户端时间 var t= new date()       服务器的时间 datetime noww= SQL语句

#9


getdate()这本身不就是SQL语句吗...

客户端时间不是应该用DateTime.Now吗

#10


哦,你的是JS,当我没说

#11


引用 9 楼 Z65443344 的回复:
getdate()这本身不就是SQL语句吗...

客户端时间不是应该用DateTime.Now吗

服务器时间差和客户端的差值为 ttime,在前台一个
<div id="someTimer1" class="someTimer" data-date="2015-02-08 08:00:00 + <%=ttime%>" ,这里要如何表示才能正确呢?

#12


:JS实现倒计时示例
//js设置倒计时
 <script type="text/javascript">
var msec=0
var sec=0
var min=0
function Time()
{
document.forms[0].time.value=min+":"+sec
go=setTimeout("Time()",1)
msec++
if(msec==1500)
{
msec=0
sec++
}
if(sec==59)
{
if(min<20)
{
sec=0
min++
}
}
}
</script>
//cs页面实现刷新窗口
public static void RefreshOpener()
{
  string js = @"<Script language='JavaScript'>
  opener.location.relocad();
  </Script>";
  HttpContext.Curent.Response.Write(js);
}

#1


该回复于2015-08-15 00:06:18被版主删除

#2


客户端在任何时候都可以去服务器获得与服务器的时间精确差(例如可以使用“简化的ntp算法”),然后客户端的目标时间就应该修正。例如客户端比服务器时间慢2分钟20秒,那么客户端的结束时间就应该比预计的结束时间提前2分20秒。

#3


服务器设置一个定时器,客户端都去读这个时间

#4


该回复于2015-08-15 00:06:18被版主删除

#5


所谓"倒计时",绝逼不是用个timer每秒减去1
而是你已经知道了结束时间,那么用当前时间减去结束时间就是剩余时间了,这是最准确的,不会出现任何误差的方法

你纠结的不过是客户机时间和服务器时间不同步而已,获取一下服务器时间,然后计算和客户机时间的时间差不就得了

#6


引用 5 楼 Z65443344 的回复:
所谓"倒计时",绝逼不是用个timer每秒减去1
而是你已经知道了结束时间,那么用当前时间减去结束时间就是剩余时间了,这是最准确的,不会出现任何误差的方法

你纠结的不过是客户机时间和服务器时间不同步而已,获取一下服务器时间,然后计算和客户机时间的时间差不就得了

嗯,这个思路我想到了,获取服务器时间和获取客户端时间可以做到,后面的步骤不知道该怎么做,服务器时间我用的SQL语句,客户端的时间用的是getdate(),计算时间差,后面的内容不知道该如何做

#7


引用 2 楼 sp1234 的回复:
客户端在任何时候都可以去服务器获得与服务器的时间精确差(例如可以使用“简化的ntp算法”),然后客户端的目标时间就应该修正。例如客户端比服务器时间慢2分钟20秒,那么客户端的结束时间就应该比预计的结束时间提前2分20秒。

从你的回答可以感觉到你是个高手,我用的方法去试试看、

#8


引用 7 楼 lj646333972 的回复:
Quote: 引用 2 楼 sp1234 的回复:

客户端在任何时候都可以去服务器获得与服务器的时间精确差(例如可以使用“简化的ntp算法”),然后客户端的目标时间就应该修正。例如客户端比服务器时间慢2分钟20秒,那么客户端的结束时间就应该比预计的结束时间提前2分20秒。

从你的回答可以感觉到你是个高手,我用的方法去试试看、

计算时间差要怎么做呢?,客户端时间 var t= new date()       服务器的时间 datetime noww= SQL语句

#9


getdate()这本身不就是SQL语句吗...

客户端时间不是应该用DateTime.Now吗

#10


哦,你的是JS,当我没说

#11


引用 9 楼 Z65443344 的回复:
getdate()这本身不就是SQL语句吗...

客户端时间不是应该用DateTime.Now吗

服务器时间差和客户端的差值为 ttime,在前台一个
<div id="someTimer1" class="someTimer" data-date="2015-02-08 08:00:00 + <%=ttime%>" ,这里要如何表示才能正确呢?

#12


:JS实现倒计时示例
//js设置倒计时
 <script type="text/javascript">
var msec=0
var sec=0
var min=0
function Time()
{
document.forms[0].time.value=min+":"+sec
go=setTimeout("Time()",1)
msec++
if(msec==1500)
{
msec=0
sec++
}
if(sec==59)
{
if(min<20)
{
sec=0
min++
}
}
}
</script>
//cs页面实现刷新窗口
public static void RefreshOpener()
{
  string js = @"<Script language='JavaScript'>
  opener.location.relocad();
  </Script>";
  HttpContext.Curent.Response.Write(js);
}