我想获得一个日期对象,它比另一个日期对象晚30分钟。我如何用JavaScript做到这一点?


当前回答

新日期() var newDateObj =新日期(); (+ 30 * 60 * 1000); 游戏机。log (newDateObj);

其他回答

新日期() var newDateObj =新日期(); (+ 30 * 60 * 1000); 游戏机。log (newDateObj);

这就是我所做的,似乎很有效:

Date.prototype.addMinutes = function(minutes) {
    var copiedDate = new Date(this.getTime());
    return new Date(copiedDate.getTime() + minutes * 60000);
}

然后你可以这样调用它:

var now = new Date();
console.log(now.addMinutes(50));

只是另一个选项,我写的:

DP_DateExtensions图书馆

如果这是您所需要的所有数据处理,那么它就太过了,但它会做您想做的事情。

支持日期/时间格式化,日期数学(添加/减去日期部分),日期比较,日期解析等。它是自由开源的。

var now = new Date(); now.setMinutes(now.getMinutes() + 30);/ /时间戳 日期(现在);//日期对象 console.log(现在);

停止使用Moment.js

正如其他优秀答案所建议的那样,在大多数情况下,处理日期时最好使用库。然而,重要的是要知道,自2020年9月起,Moment.js被认为是遗留的,不应再用于新项目。

引用Moment在官方文件中的声明:

我们不希望在未来的新项目中使用Moment。[…我们现在通常认为Moment是一个处于维护模式的遗留项目。它还没死,但已经完成了。

现代图书馆

以下是Moment推荐的替代方案。

勒克桑

《Luxon》可以看作是《Moment》的演变。作者Isaac Cambron是Moment的长期贡献者。请阅读卢克松为什么存在?以及Luxon文档中的For Moment用户页面。

locale:提供的Intl 时区:提供国际时区

import {DateTime} from 'luxon'

function addMinutes(date, minutes) {
    return DateTime.fromJSDate(date).plus({minutes}).toJSDate()
}

Day.js

Day.js被设计成一个极简的Moment.js替代品,使用类似的API。它不是一个临时的替代品,但如果你习惯了使用Moment的API,想要快速移动,可以考虑使用Day.js。

区域设置:可以单独导入的自定义数据文件 时区:国际提供,通过一个插件

import dayjs from 'dayjs'

function addMinutes(date, minutes) {
    return dayjs(date).add(minutes, 'minutes').toDate()
}

日期-fns

Date-fns提供了一系列用于操作JavaScript Date对象的函数。要了解更多详细信息,请滚动到date-fns主页上的“为什么是date-fns?”

区域设置:可以单独导入的自定义数据文件 时区:通过单独的配套库提供了Intl

import {addMinutes} from 'date-fns'

function addMinutesDemo(date, minutes) {
    return addMinutes(date, minutes)
}

js-Joda

js-Joda是Java的Three-Ten Backport的JavaScript端口,它是Java SE 8 Java的JSR-310实现的基础。包的时间。如果你熟悉java。time, joda time,或Noda time,你会发现js-Joda相当。

区域:通过附加模块自定义数据文件 时区:通过附加模块自定义数据文件

import {LocalDateTime, nativeJs, convert} from '@js-joda/core'

function addMinutes(date, minutes) {
    return convert(
        LocalDateTime.from(
            nativeJs(date)
        ).plusMinutes(minutes)
    ).toDate()
}