Javascript - 获取上个月的日期

标签 javascript jquery angularjs angularjs-scope

如果我有一个返回日期的变量,格式为 dd MMM yyyy,即 2014 年 8 月 28 日,我如何获取上个月的日期。

我可以通过以下方式修改月份:

$scope.DateMapping = function (months) {

    var myVariable = "28 Aug 2014"
    var makeDate = new Date(myVariable);
    prev = new Date(makeDate.getFullYear(), makeDate.getMonth()+1, 1);

});

本质上,这是在月份上加一。但是我如何计算年份,所以如果当前日期是 2014 年 12 月 12 日,那么之前的日期是 2013 年 1 月 12 日?

我的应用程序使用 AngularJS 可以使用过滤器。

更新:

    var myVariable = "28 Aug 2014"
    var makeDate = new Date(myVariable);
    var prev = new Date(makeDate.getFullYear(), makeDate.getMonth()+1, makeDate.getMonth());

    console.log(myVariable)
    console.log(makeDate)
    console.log(prev)

Output:

    28 Aug 2014
    Thu Aug 28 2014 00:00:00 GMT+0100 (GMT Standard Time)
    Mon Sep 01 2014 00:00:00 GMT+0100 (GMT Standard Time)

为什么虽然月份增加了,但日期却显示为 01 而不是 28?

最佳答案

var myVariable = "28 Aug 2014"
var makeDate = new Date(myVariable);
makeDate = new Date(makeDate.setMonth(makeDate.getMonth() - 1));

更新:

一个较短的版本:

var myVariable = "28 Aug 2014"
var makeDate = new Date(myVariable);

console.log('Original date: ', makeDate.toString());

makeDate.setMonth(makeDate.getMonth() - 1);

console.log('After subtracting a month: ', makeDate.toString());

更新 2:

如果您不想处理极端情况,只需使用 moment.js。 Date 的原生 JavaScript API 很糟糕。

关于Javascript - 获取上个月的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26488043/

相关文章:

AngularJS:文件上传

javascript - Url.Action 在 VS IDE 中的 JavaScript 中将先前的 URL 与当前的路由参数结合起来

jquery - Jqplot 线图,具有悬停在线效果

javascript - 比较动态 JSON 文件 - JavaScript

javascript - jQuery:使用 .after() 或 .before() 仅将元素添加到选择中的最后一项

javascript - 使用 require.js 加载 Angular ui-bootstrap 失败,除非我重命名 ui.bootstrap?

Javascript 视差在 Mac 上很慢

javascript - 从特殊字符之前和之后的字符串中获取值 - Jquery

javascript - 如何使用 Three.js 按窗口宽度缩放内容?

javascript - 使用 angular.js 路由手动刷新时仍然得到 'Not Found'