Search code examples
javajodatimestubbydb

Getting wrong date when I add months


I am writing my stubs in StubbyDB. And asserting the data in functional tests. This is something I am doing in my functional tests to calculate date for assertion (using joda datetime library)

DateTime now = DateTime.now();
DateTime future = now.plusMonths(6);

And this is something I am doing in my stubs;

{{TODAY+6m}}

But I am getting the difference of few days. Is this the bug or am I doing something wrong?

Edit

Consider today is "30 Sept 2016", and I add 5 months to it then

now.plusMonths(5) => 2017-02-28
{{TODAY+5m}} => 2017-03-02

Solution

  • Reason

    As per joda-time documentation,

    2007-03-31 plus one month cannot result in 2007-04-31, so the day of month is adjusted to 2007-04-30.

    However StubbyDB use javascript based date calculation which adjust date 2007-04-31 to 2007-05-01.

    So this is not the bug but this is how these APIs work.

    Solution

    Found in sample application

    use {{JODA_TODAY+6m}} instead of {{TODAY+6m}}