首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JS中的递增时间戳(YYYY-MM-DDTHH:MM:SS)问题

JS中的递增时间戳(YYYY-MM-DDTHH:MM:SS)问题
EN

Stack Overflow用户
提问于 2020-07-02 15:46:13
回答 3查看 66关注 0票数 1

我尝试以(YYYY-MM-DDTHH:MM:SS)格式将时间戳的时间增加1小时。在时间22:00:00之前,这个方法工作得很好。但是,当输入时间为23:00:00时,时间组件会正确地更改为00:00:00,但是相应的日期会递增到一个月以上(跳过一个完整的月)。例如。2020-07-31T23:00:00更改为2020-09-01T00:00:00。这方面的任何帮助都是非常感谢的。

代码语言:javascript
代码运行次数:0
运行
复制
var sdate = '2020-07-31T23:00:00';
var temp1 = sdate.split('T');
document.write(temp1);

var d = temp1[0].split('-');
var t = temp1[1].split(':');

document.write("<br />");
document.write(d);

document.write("<br />");
document.write(t);

var dt3 = new Date(d[0], d[1], d[2], t[0], t[1], t[2], 0);
var dt4 = dt3.setSeconds(dt3.getSeconds() + 3600);
var final = new Date(dt4);

document.write("<br />");
document.write(final);

document.write("<br />");
document.write(final.getFullYear());

document.write("<br />");
document.write(final.getMonth());

document.write("<br />");
document.write(final.getDate());

document.write("<br />");
document.write(final.getHours());

document.write("<br />");
document.write(final.getMinutes());

document.write("<br />");
document.write(final.getSeconds());

EN

回答 3

Stack Overflow用户

发布于 2020-07-02 15:51:36

为什么会有这么复杂的情况?JS有自己的Date Object

您只需通过以下操作即可实现将小时数加1:

代码语言:javascript
代码运行次数:0
运行
复制
var sdate = new Date('2020-07-31T23:00:00');
console.log(sdate.toISOString());

sdate.setHours(sdate.getHours()+1)
console.log(sdate.toISOString());

票数 0
EN

Stack Overflow用户

发布于 2020-07-02 15:53:37

你的问题是,你认为月份是7月实际上是8月,因为javacript构造函数上的月份数字是0索引的,所以在这一行:

代码语言:javascript
代码运行次数:0
运行
复制
var dt3= new Date(d[0], d[1], d[2], t[0], t[1], t[2], 0); 

您正在设置8月31日有关更多信息,请访问https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

票数 0
EN

Stack Overflow用户

发布于 2020-07-02 18:05:03

您将7作为月份传递给构造函数,但是月计数从0开始,所以您认为是7月,但实际上已经是8月了!光阴似箭。

因此,这意味着当你增加一个小时,你会超过午夜进入九月。

代码语言:javascript
代码运行次数:0
运行
复制
var sdate = '2020-07-31T23:00:00';
var temp1 = sdate.split('T');
document.write(`date I think I am starting with: ${sdate}`);

var d = temp1[0].split('-');
var t = temp1[1].split(':');

var dt3= new Date(d[0], d[1], d[2], t[0], t[1], t[2], 0); 
document.write("<br />");
document.write(`date I am actually starting with: ${dt3.toISOString()}`);

要获得更一致的结果,请使用像moment.js这样的库。约会是很难的,而且你总能找到合适的案例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62691454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档