如何使用字符串中的数据减去日期后的小时数?

时间:2019-06-18 15:20:59

标签: javascript reactjs

我有一个使用javascript的UTC日期,我想减去一些时间。

我在网上搜索过,显然应该将减号保留为以下日期:

const diff = "-5"
const utcDate = "2017-02-22 17:28:13"
const date = new Date(utcDate + diff[0] + ' ' + diff[1])
//desired output: 2017-02-22 12:28:13

但我似乎无法使其正常工作。

2 个答案:

答案 0 :(得分:0)

someDate.setHours(someDate.getHours()+1);

来自https://stackoverflow.com/a/1050782/537998

答案 1 :(得分:0)

我用.getTime()完成所有日期计算。 所以一个小时是3600000毫秒。

const MILLISECONDS_HOUR = 3600000;

const diff = -5;
const utcDate_str = "2017-02-22 17:28:13";

const utcDate = new Date( utcDate_str );

const minus_5_hours = new Date( utcDate.getTime() + ( MILLISECONDS_HOUR * diff ));

console.log( utcDate.toJSON());
console.log( minus_5_hours.toJSON());

最大的优势是javascript将处理take年,月份边界等问题。

但是,由于您正在调用变量diff,因此您是否要计算lcoal时间与UTC时间?

在这种情况下,请重新阅读javascript Date方法。有很多方法可以处理UTC和本地时间,例如:date.getUTCDate()date.getDate()

因此您可能不必自己计算所有这些。

此外,如果您按照ISO "2017-02-22T17:28:13.000Z"格式化日期,则会自动将其解析为UTC。