设置UTC日期似乎是在使用夏令时
Setting UTC date seems to be using daylight savings
当我试图添加约会对象的月份时,它会跳过11月。我相信这是因为十一月的夏令时。
这是一个代码,表明它比我想要的更进一步:
var my_date = new Date(1377993599000);
console.log(my_date.toUTCString());
此输出"2013年8月31日星期六23:59:59 GMT"
my_date.setUTCMonth(my_date.getUTCMonth() + 3);
console.log(my_date.toUTCString());
此输出"2013年12月1日星期日23:59:59 GMT"
现在,当我尝试只添加2:时
my_date.setUTCMonth(my_date.getUTCMonth() + 2);
console.log(my_date.toUTCString());
输出"2013年10月31日星期四23:59:59 GMT"
当我试图将日期设置为零时:
my_date.setUTCMonth(my_date.getUTCMonth() + 3, 0);
console.log(my_date.toUTCString());
输出"2013年10月31日星期四23:59:59 GMT"
有人知道解决这个问题的诀窍吗?
放弃UTC功能,简单地从所有时间中删除时区偏移,我会更好吗?如果我这样做,它真的能解决我的问题吗?
没有11月31日,所以当你在月上加3时,它别无选择,只能滚动到下个月,使其成为12月1日。
可靠地向前推进几个月的问题很棘手。在执行此操作之前,您可以将月日(.setDate()
)设置为1,但随后您必须决定如何将其设置回与原始日期相关的日期。
Pointy的答案是正确的,这里有一个函数可以允许不均匀的月份:
/* Given a date object, add months (may be +ve or -ve)
** Allow for uneven length months, e.g.
**
** 30 Jan 2013 + 1 month => 30 Feb => 2 Mar
**
** so make 28 Feb. Also works for subtraction
**/
function addMonths(date, months){
// Copy date, avoid IE bug for early dates
var d = new Date(date.getTime());
months = Number(months);
d.setMonth(d.getMonth() + months);
var check = d.getMonth() - date.getMonth() + months;
// If rolled over to next month, go to last day of previous month
if (check) {
d.setDate(0);
}
return d;
}
相关文章:
- 从JS到PHP;另一个CORS问题(似乎是)
- 依赖对象类型检查Javascript似乎是多余的
- innerHTML似乎是唯一好的解决方案
- “TypeError: t.validation is undefined”,但它似乎是已定义的
- 图标不会显示,似乎是 webpack 的问题
- 与隔离作用域的 Angular 双向绑定似乎是单向的
- onsubmit=“返回检查表(this);” 对于我的表单来说似乎是空的
- Javascript变量似乎是静态的
- Ractive.js索引没有't似乎是被动的
- Javascript值似乎是交替的,而不是添加在一起的
- 高位图表列没有宽度(似乎是任意的)
- 设置UTC日期似乎是在使用夏令时
- 咖啡描述:我可以't似乎是通过ID+子类来选择元素
- 为什么非dojo javascript错误似乎是由chrome中的dojo.xd.*.js引起的
- 我的代码是在$document.ready中调用的,但似乎是在加载DOM之前运行的.为什么?
- 源代码似乎是隐藏的
- 否则if语句对我来说似乎是合理的,但会破坏代码
- JavaScript函数关键字在声明式使用时似乎是准备好的
- 浏览器多人网络策略-这似乎是一个可行的解决方案
- CKEDITOR - Wordwrap似乎是张贴