如何将Count up计时器设置为时区

时间:2017-05-22 21:15:23

标签: javascript html time counter

我有一个计时器从一个日期算起来,我使用的事件在西海岸时区开始(所以,在美国东部时间午夜,它只在西海岸的晚上11点)。我如何设定它来计算西海岸时区的日子?我研究了一下,还没有找到任何好的解决方案。任何帮助或建议都会很棒!

这是我的代码:

<script>
var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")

function countup(yr,m,d){
var today=new Date()
var todayy=today.getYear()
if (todayy < 1000)
todayy+=1900
var todaym=today.getMonth()
var todayd=today.getDate()
var todaystring=montharray[todaym]+" "+todayd+", "+todayy
var paststring=montharray[m-1]+" "+d+", "+yr
var difference=(Math.round((Date.parse(todaystring)-Date.parse(paststring))/(24*60*60*1000))*1)
difference+=" "
document.write("<div><font color="#3366FF"><B>Today Is Day #"+difference+" Inside The Big Brother House.</B></font></div>
</div></div>
")
}
//enter the count up date using the format year/month/day
countup(2017,06,28)
</script>

1 个答案:

答案 0 :(得分:0)

从类似的问题中重新循环一个答案(在水平线下方看到),该问题是在JavaScript中以毫秒为单位查找dateTime偏移量。这应该可以帮助您将时区本地化到您想要的任何海岸线,尽管您可能会考虑开始关闭UTC时间,并调整代码中的差异。

为了进一步解释,UTC基本上是一个通用的时区。如果你想从西海岸时间算起来,那么你基本上仍在计算相同的小时数。下面提供的方法将帮助您从任何时区使用的UTC时间中找到偏移量,但时间仍然以每秒1秒的速度流动!基本上,除非您需要偏移用于UI目的,否则我不确定您是否需要在代码中执行此偏移。无论如何你可能想要这样做,但同样,它可能没有必要。

我希望这有帮助!

here

被盗

此解决方案通过使用 getTimeOffset()(返回UTC时间和本地时间之间的时差,以分钟为单位)函数来查找给定位置的UTC时间偏移并将其更改为毫秒,然后从UTC执行计算以返回不同时区的时间。

/** 
 * function to calculate local time
 * in a different city
 * given the city's UTC offset
 */
function calcTime(city, offset) {

// create Date object for current location
var d = new Date();

// convert to msec
// add local time zone offset
// get UTC time in msec
var utc = d.getTime() + (d.getTimezoneOffset() * 60000);

// create new Date object for different city
// using supplied offset
var nd = new Date(utc + (3600000*offset));

// return time as a string
return "The local time in " + city + " is " + nd.toLocaleString();
}

此解决方案可行,但在几分钟内表达时区并调整UTC分钟更为简单。

我不确定这是否正是您正在寻找的,但是从您粘贴的代码中确切地说出您想要的内容有点困难!我希望这里的信息足以让你实现你想要的任何东西,但如果没有,请告诉我,我会相应地更新这个答案:)