-2

I am calculating time based on Hawaii timezone.I have test scenario where my current date is 2017-01-01T10:52:07.656-10:00 (January 1). When I try to get previous date using .minusDays(1) I get date as 2016-12-31T12:52:07.656-08:00 (December 31).

Now for previous date when I try to format in MM/DD/YYYY. I get output as 12/366/2016 instead of 12/31/2016

My code:

    DateTime dt4 = new DateTime("2017-01-01T10:52:07.656-10:00");
    System.out.println("Given Date:"+ dt4);
    DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/DD/YYYY");
    System.out.println("Given Date After Date format: "+fmt.print(dt4));

    DateTime previousDay = dt4.minusDays(1);
    System.out.println("Previous Day: "+ previousDay);
    System.out.println("Previous Date After Date format: "+fmt.print(previousDay));

O/p:

Given Date: 2017-01-01T12:52:07.656-08:00
Given date After Date format: 01/01/2017
Previous Day: 2016-12-31T12:52:07.656-08:00
Previous Date After Date format: 12/366/2016

Iłya Bursov
  • 23,342
  • 4
  • 33
  • 57
user2748161
  • 89
  • 1
  • 3
  • 15

1 Answers1

2

Check this.

You get 366 because 2016 year has 366 days and you chosen the last one. The Capital D is for Day in year, what i think you want is d lower case for day in month.

If you scroll down you will see some examples that can help you.

ddarellis
  • 3,912
  • 3
  • 25
  • 53