Re: java.util.Calendar question
laredotornado wrote:
I'm using Java 1.6 on Mac 10.6.3. I'm trying to get the closest
Sunday before today, unless today is Sunday in which case I don't want
to change my calendar object. Here is what I have ...
cal.set(Calendar.DAY_OF_MONTH, 1);
Are you quite certain you indented your code far enough? It's still readable,
so I think you didn't.
while (cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
cal.add(Calendar.DAY_OF_YEAR, -1);
out.println("\t<!-- iterating through cal:" +
cal.getTime().toString() + "-->");
}
<http://sscce.org/>
<http://sscce.org/>
<http://sscce.org/>
<http://sscce.org/>
<http://sscce.org/>
<http://sscce.org/>
<http://sscce.org/>
Gosh darn it!
However, this loop is consistently returning a calendar instance that
is Saturday. Any ideas of something obvious that I'm missing here?
The problem, of course, is in the code you refused to show us because you
didn't provide an SSCCE.
Are you /trying/ to prevent us from helping you?
<sscce>
package eegee;
import java.util.Calendar;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class Calendroll
{
@Test
public void test()
{
Calendar cal = Calendar.getInstance();
cal.set( Calendar.DAY_OF_MONTH, 1 );
findSunday( cal );
assertEquals( Calendar.SUNDAY, cal.get( Calendar.DAY_OF_WEEK ));
cal.set( Calendar.YEAR, 1999 );
cal.set( Calendar.MONTH, Calendar.DECEMBER );
cal.set( Calendar.DAY_OF_MONTH, 31 );
findSunday( cal );
assertEquals( Calendar.SUNDAY, cal.get( Calendar.DAY_OF_WEEK ));
}
private void findSunday( Calendar cal )
{
while (cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY)
{
cal.add(Calendar.DAY_OF_YEAR, -1);
}
}
}
</sscce>
Works for me (running in JUnit framework).
--
Lew