【问题标题】:Get product given date获取产品给定日期
【发布时间】:2017-12-22 23:27:53
【问题描述】:

如果我有像 07/21/2017 8:30 AM 这样的格式,如何正确获取给定日期前 3 天的日期,这是因为我使用 Eonasdan DateTime Picker 的格式。但是当我尝试用 3 天减去它时,我得到 Fri Jul 21 2017 08:24:14 GMT+0800 (China Standard Time) 作为我的值,但我想要的输出应该是相同的格式,如 2017 年 7 月 21 日上午 8:30。即使遵循我的格式,我如何才能获得该值?

我的代码:

var d =new Date('07/21/2017 8:30 AM');
var yesterday = new Date(d.getTime() - (96*60*60));
alert(yesterday);

【问题讨论】:

  • 我强烈建议你看看 moment.js,它会让你在 JS 中处理日期时更轻松。
  • 我认为我的问题有点相同但完全不同,stackoverflow.com/questions/1296358/… 的问题只是要求将当前日期减去某个值而没有任何格式,如果我的问题有格式可以遵循。因此,我可以说我的问题是独一无二的,不一样或没有重复。 @Champ

标签: javascript


【解决方案1】:

您需要在Date 类上使用setDate 函数来更改日期变量的日期部分

    var d =new Date('07/21/2017 8:30 AM');
    d.setDate(d.getDate() - 3);
    console.debug(d);

【讨论】:

  • setDate() 不是 API,它是一个内置的类方法。
  • @brennanenanen 这听起来对吗 - setDate API on Date class?我知道将其称为方法当然是正确的,您已建议。
  • API 代表应用程序编程接口。 API 用于在应用程序之间进行通信,而不是像 js 这样的内置类。
  • 您所说的当然是正确的,但是该 API 也非常适用于类的公共方法。请参阅here
  • 嗯,我猜。不过,它没有与应用程序对话,也没有使用编程接口。
【解决方案2】:

function formatDate(d) {
            month = '' + (d.getMonth() + 1),
            day = '' + d.getDate(),
            year = d.getFullYear();
    
        if (month.length < 2) month = '0' + month;
        if (day.length < 2) day = '0' + day;
    
        date = [month, day, year].join('/');
        var hours = d.getHours();
        var minutes = d.getMinutes();
        var ampm = hours >= 12 ? 'PM' : 'AM';
        hours = hours % 12;
        hours = hours ? hours : 12; // the hour '0' should be '12'
        minutes = minutes < 10 ? '0'+minutes : minutes;
        var strTime = hours + ':' + minutes + ' ' + ampm;
        return date+" "+strTime;
}
var d =new Date('07/21/2017 8:30 AM');
d.setDate(d.getDate() - 3);
var yesterday = formatDate(d);
alert(yesterday);

这应该可以工作

【讨论】:

  • 谢谢,这是我正在寻找的那个。感谢@Kishor V 的帮助
【解决方案3】:

这应该可以解决问题:

var date = new Date('07/21/2017 8:30 AM'); // get
date.setDate(date.getDate() - 3);
console.log(date.toString());

基本上,使用getDate() 获取当前日期并使用setDate() 将时间更新为过去3 天。

如果您想格式化您的日期,请查看moment.js,就像@Robert 所说的那样。你可以使用类似的东西:

moment().format('MM/DD/YYYY, h:mm:ss a');

有关Datehere 和时刻文档here 的更多信息。

【讨论】:

    【解决方案4】:

    您可以简单地从日期中减去天数 例如d.getDate() - 3

    var d =new Date('07/21/2017 8:30 AM');
    d.setDate(d.getDate() - 3);
    alert(d)

    【讨论】:

      【解决方案5】:

      试试这个

      var d = new Date();
      var d =new Date('07/21/2017 8:30 AM');
      var yesterday = d;
      yesterday.setDate(d.getDate()-3);
      alert(yesterday);
      

      【讨论】:

      • 是的,对不起,我回答他的速度比其他人慢。当我点击他的问题时,没有人发布答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-12
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多