java 日历格式转化

java 日历格式转化

标签: java基础


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

//Example8_16
import 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]);
        }
    }
}
//CalendarBean
import 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_16
import 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值