如何使用moment.js将选定的日期转换为上个月和去年的日期?

时间:2017-12-22 13:51:01

标签: javascript jquery date momentjs

我正在研究moment.js,我很困惑转换这两个日期。

For Example:

    var start = moment().startOf('month');  // Dec 01 2017
    var end = moment(); // Dec 31 2017

我想将此日期转换为上个月和去年。

Eg: 
    Last Month: Nov 01 2017 & Nov 30 2017 (Problem in converting 31 to 30)
    Last Year: Dec 01 2016 & Dec 31 2016

如果我更改开始日期和结束日期,则需要更改另一个值。

更新

$(function() {

    var start = moment().startOf('month'); // eg: 12/01/2017
    var end = moment();  // eg: 12/31/2017

    function cb(start, end) {

        var startyear = moment().subtract(start, 'year'); // eg: 12/01/2016
        var endyear = moment().subtract(end, 'year'); // eg: 12/31/2016

        var startmonth = moment().subtract(start, 'month'); // eg: 11/01/2017
        var endmonth = moment().subtract(end, 'month'); // eg: 11/30/2017

        $('#reportrange span').html(start.format('MMM D, YYYY') + ' - ' + end.format('MMM D, YYYY'));
        $('#report1 span').html(startyear.format('MMM D, YYYY') + ' - ' + endyear.format('MMM D, YYYY'));
        $('#report2 span').html(startmonth.format('MMM D, YYYY') + ' - ' + endmonth.format('MMM D, YYYY'));
    }

     $('#reportrange').daterangepicker({
         "autoApply": true,
        "showDropdowns": false,
        "alwaysShowCalendars": false,
        "opens": "left",
        startDate: start,
        endDate: end,
    },cb);  

    cb(start, end);
    });

如果我选择两个日期,我想将这些日期转换为年份和月份。

2 个答案:

答案 0 :(得分:0)

我认为您的问题是您正在尝试减少月份和年份,但不会检查当月的最后一天。

检查此示例:

$output = sapi_windows_cp_conv(sapi_windows_cp_get('oem'), 65001, $output);
  

Sun Dec 31 2017 00:00:00 GMT-0200(E。South America Daylight Time)

如果您尝试减少年份和月份而不检查该月的最后一天将再次更改一个月的一天:

var myDate = new Date(2017, 11, 31);
console.log(myDate);
  

Thu Dec 01 2016 00:00:00 GMT-0200(E。South America Daylight Time)

如果你减少检查当天没有通过最大值将正常工作:

myDate.setFullYear(2016, 10, 31);
console.log(myDate);
  

2016年11月30日星期三00:00:00 GMT-0200(南美洲夏令时)

如何计算这里的最后一天Calculate last day of month in javascript

,这已经成了问题

答案 1 :(得分:0)

如果您正在寻找开始&基于当前日期的上个月和上年的结束日期,您可以简单地执行:

var yourDate = '2017-11-12';

var startOfLastMonth = moment(yourDate).subtract(1, 'month').startOf('month');
var endOfLastMonth = moment(yourDate).subtract(1, 'month').endOf('month');

var startOfLastYear = moment(yourDate).subtract(1, 'year').startOf('month');
var endOfLastYear = moment(yourDate).subtract(1, 'year').endOf('month');

console.log('Your Date: ' + moment(yourDate).format('MMM DD YYYY'))
console.log('')
console.log(startOfLastMonth.format('MMM DD YYYY'))
console.log(endOfLastMonth.format('MMM DD YYYY'))
console.log('')
console.log(startOfLastYear.format('MMM DD YYYY'))
console.log(endOfLastYear.format('MMM DD YYYY'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>