如何在 TypeScript 中从日期中减去天数

Posted

技术标签:

【中文标题】如何在 TypeScript 中从日期中减去天数【英文标题】:How to Subtract Days From Date in TypeScript 【发布时间】:2018-04-09 16:05:43 【问题描述】:

我想从 TypeScript 中的当前日期中减去天数。 例如,如果当前日期是 2017 年 10 月 1 日,我想减去 1 天得到 2017 年 9 月 30 日,或者如果我想减去 3 天,我得到 9 月 28 日等等。

这是我目前所拥有的,结果是我收到 1969 年 12 月 31 日。我认为这意味着 tempDate.getDate() 返回零,就像 1970 年 1 月 1 日的纪元一样。

这是我的代码,目标是返回前一个工作日。

    protected generateLastWorkingDay(): Date 

        var tempDate = new Date(Date.now());
        var day = tempDate.getDay();


        //** if Monday, return Friday
        if (day == 1) 
            tempDate = new Date(tempDate.getDate() - 3);
         else if (1 < day && day <= 6) 
            tempDate = new Date(tempDate.getDate() - 1);
        

        return tempDate;
    

【问题讨论】:

【参考方案1】:

getDate 返回月份中的日期 (1-31),因此从中创建一个新的 Date 将该数字视为“自纪元以来的毫秒数”。

您可能想要的是使用 setDate 更改日期,因为它会自动处理数月/数年的倒退。

protected generateLastWorkingDay(): Date 
  const lastWorkingDay = new Date();

  while(!this.isWorkingDay(lastWorkingDay)) 
    lastWorkingDay.setDate(lastWorkingDay.getDate()-1);
  

  return lastWorkingDay;


private isWorkingDay(date: Date) 
  const day = date.getDay();

  const isWeekday = (day > 0 && day < 6);

  return isWeekday; // && !isPublicHoliday?

【讨论】:

new Date(Date.now()) 是多余的。你可以简单地做new Date()【参考方案2】:

我就是这样做的

let yesterday=new Date(new Date().getTime() - (1 * 24 * 60 * 60 * 1000));
let last3days=new Date(new Date().getTime() - (3 * 24 * 60 * 60 * 1000));

我们需要从当前日期减去(no_of_days) * 24 * 60 * 60 * 1000

【讨论】:

【参考方案3】:

你可以

const current = new Date()

然后

const numberOfDaysToSubstract= 3;

const prior = new Date().setDate(current.getDate) - numberOfDaysToSubstract);

你可以在这里看到一个例子

https://codepen.io/Jeysoon/pen/poNZRwd?editors=1112

【讨论】:

以上是关于如何在 TypeScript 中从日期中减去天数的主要内容,如果未能解决你的问题,请参考以下文章

如何从用户在android studio中提供的日期中减去固定天数?

如何从/到日期减去/添加天数?

如何从普通日期中减去天数?

从日期中添加或减去天数时如何避免周末或节假日[重复]

如何使用 postgresql/netezza 从日期时间中减去天数或月数

如何在 MySQL 中减去天数