java中的小问题
新手上路,求大神指点想请问一下怎么把输出的星期几弄成英文格式的,还有怎么把如果是逢周六周日就输出(“^_^”),而不是输出数字呢?
import java.text.DateFormatSymbols;
import java.util.*;
/*
* @author Letitia
* 2014-04-02
* function print current calendar
*/
public class CalendarTest
{
private static final int Saturday = 0;
private static final int Sunday = 0;
public static void main(String[] args)
{
//construct d as current date
GregorianCalendar d = new GregorianCalendar();
int today = d.get(Calendar.DAY_OF_MONTH);
int month = d.get(Calendar.MONTH);
//set d to start date of the month
d.set(Calendar.DAY_OF_MONTH,1);
int weekday = d.get(Calendar.DAY_OF_WEEK);
//get first day of week(Sunday in the U.S)
int firstDayOfWeek = d.getFirstDayOfWeek();
//determine the required indentation for the first line
int indent = 0;
while(weekday != firstDayOfWeek)
{
indent++;
d.add(Calendar.DAY_OF_MONTH, -1);
weekday = d.get(Calendar.DAY_OF_WEEK);
}
//print weekday names
String[] weekdayNames = new DateFormatSymbols().getShortWeekdays();
do
{
System.out.printf("%4s", weekdayNames[weekday]);
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
}
while(weekday != firstDayOfWeek);
System.out.println();
for(int i = 1; i <= indent; i++)
System.out.print(" ");
d.set(Calendar.DAY_OF_MONTH, 1);
do
{
//print day
int day = d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);
//mark current day with *
if (day ==today)
System.out.print("*");
else System.out.print(" ");
// advance d to the next day
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
// start a new line at the start of the week
if(weekday == firstDayOfWeek)
System.out.println();
}
while(d.get(Calendar.MONTH) == month);
//the loop exist when d is day 1 of the next month
//print final end of line if necessary
if(weekday != firstDayOfWeek)
System.out.println();
}
}
输出结果是:
星期日 星期一 星期二 星期三 星期四 星期五 星期六
1 2 3* 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30