java 日历格式转化

来源:互联网 发布:网络通信系统 编辑:程序博客网 时间:2024/06/15 10:00

java 日历格式转化

标签: java基础


把“日一二三四五六”格式的日历转化为“一二三四五六日”格式。

//Example8_16import java.util.*;public class Example8_16 {    public static void main(String[] args)     {        CalendarBean cb = new CalendarBean();        System.out.printf("please input year and month: ");  //输入年份和月份        Scanner reader = new Scanner(System.in);        int year = 0, month = 0;        cb.setYear(year = reader.nextInt());        cb.setMonth(month = reader.nextInt());        String [] a = cb.getCalendar();  //返回号码的一维数组        char [] str = "日一二三四五六".toCharArray();        System.out.printf("----------------------------\n%14d.%-2d\n", year, month);  //打印表头        System.out.printf("----------------------------\n");        for(char c : str)  System.out.printf("%3c", c);        for(int i = 0; i < a.length; i++)  //输出数组a        {            if(i % 7 == 0)  System.out.println("");  //换行            System.out.printf("%4s", a[i]);        }    }}
//CalendarBeanimport java.util.Calendar;public class CalendarBean{    int year = 0, month = 0;    public void setYear(int year)    {        this.year = year;    }    public void setMonth(int month)    {        this.month = month;    }    public String [] getCalendar()    {        String [] a = new String[42];  //日历最多可达6行        Calendar rili = Calendar.getInstance();        rili.set(year, month - 1, 1);  //模拟翻日历        int weekDay = rili.get(Calendar.DAY_OF_WEEK) - 1;  //计算出1号的星期        int day = 0;        if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)  day = 31;        if(month == 4 || month == 6 || month == 9 || month == 11)  day = 30;        if(month == 2)        {            if(((year % 4 == 0) && (year % 100 != 0)) || year % 400 == 0)  day = 29;            else  day = 28;        }        for(int i = 0; i < weekDay; i++)  a[i] = " ";  //日历顺序输出,格式控制        for(int i = weekDay, n = 1; i < weekDay + day; i++)        {            a[i] = String.valueOf(n);            n++;        }        for(int i = weekDay + day; i < a.length; i++)  a[i] = " ";        return a;    }}

原日历测试样例
2017.11
2020.2

修改Example8_16.java, CalendarBean.java不变

//Example8_16import java.util.*;public class Example8_16 {    public static void main(String[] args)     {        CalendarBean cb = new CalendarBean();        System.out.printf("please input year and month: ");  //输入年份和月份        Scanner reader = new Scanner(System.in);        int year = 0, month = 0;        cb.setYear(year = reader.nextInt());        cb.setMonth(month = reader.nextInt());        String [] a = cb.getCalendar();        char [] str = "一二三四五六日".toCharArray();        System.out.printf("----------------------------\n%14d.%-2d\n", year, month);  //打印表头        System.out.printf("----------------------------\n");        for(char c : str)  System.out.printf("%3c", c);        System.out.println("");        int sunday = 0, six = 0;        //日一二三四五六 -> 一二三四五六日        //有两种情况:(1)原日历第一行第一列为空,也就是a[0] == " ";(2)不为空        if(a[0] == " ")  sunday = 7;          for(int i = 1; i < a.length; i++)        {            System.out.printf("%4s", a[i]);            six++;            if(six == 6)            {                if(sunday < a.length)  System.out.printf("%4s\n", a[sunday]);                sunday += 7;                i++;                six = 0;            }        }    }}

修改后的日历测试样例
第一天
February

原创粉丝点击