作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
function(startDate, lastDate){
var midDate = newDate(startDate.getFullYear(),startDate.getMonth(),Math.ceil((lastDate.getDate() + startDate.getDate()) / 2));
var startDateOffset = startDate.getTimezoneOffset();
var lastDateOffset = lastDate.getTimezoneOffset();
var midDateOffset = midDate.getTimezoneOffset();
var finalDate = new Date();
if(startDateOffset == midDateOffset){
if((lastDate.getDate() - midDate.getDate()) > 1){
alert("loop");
finalDate = this.getDaylightChangeDate(midDate, lastDate);
}
}
我的开始日期为 10 月 20 日,结束日期为 22 日,中间日期再次为 10 月 20 日。这仅发生在 Brasilia 位置, startDateOffset 和 midDateOffset 也是 180 作为输出.. 这将代码放入无限循环中,因为中间日期始终等于开始日期。请在javascript中建议一些其他方法来计算中间日期
最佳答案
您的代码没有任何问题。 2012-10-20T00:00 和 2012-10-21T23:00 之间的中间日期是 2012-10-20T23:30。当然,如果输入日期相隔不超过 2 天,您的代码就不能期望日期会有所不同。如果您在与开始和结束日期相同的日期通过,甚至会发生什么?
如果这些日期记录在不同的时区,您应该始终使用 UTC 来计算差异。
关于javascript - 巴西利亚时区计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13155884/
我是一名优秀的程序员,十分优秀!