java 常用类 练习_Java常用类日历练习

import java.text.DateFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import java.util.Scanner;

public class TestCalendar {

/**

* 用户随便输入一个日期(yyyy-MM-dd), 打印出这个日期所在月的每一天, 格式如下:

* 日 一 二 三 四 五 六

* 1 2 3 4 5 6

* 技能点:

* 1. 字符串 --> util.Date

* 2. Date --> Calendar

* 3. 修改日期 --> set

* 4. 记录用户输入的是哪一天 --> get

* 5. 判断星期几 --> get

* 6. 获取该月份的最大天数 --> getActuralMa...

* 7. 日期自增 --> add

*/

public static void main(String[] args) {

//创建扫描器

Scanner sc = new Scanner(System.in);

while (true){

//提示用户输入

System.out.println("请输入一个日期,格式为:2018-12-05,输入exit退出");

//接受用户输入

String temp = sc.nextLine();

if(temp.equalsIgnoreCase("exit")){//判断两个字符串是否相等忽略大小写

System.out.println("ByeBye");

break;

}

//创建日期格式化对象

//DateFormat日期格式化类

DateFormat format = new SimpleDateFormat("yyyy-MM-dd");

try {

//string --> date

Date date = format.parse(temp);//此处需添加异常

//date --> Calendar

//创建日历对象

Calendar calendar = new GregorianCalendar();

//设置日期为用户输入日期

calendar.setTime(date);

//打印日历抬头

System.out.println("日\t一\t二\t三\t四\t五\t六");

//记录用户输入的日

int currentDate = calendar.get(Calendar.DATE);

//修改日期为此月的第一天

calendar.set(Calendar.DAY_OF_MONTH,1);

//获取第一天是星期几

int week = calendar.get(Calendar.DAY_OF_WEEK);//1-7

//打印缩进

for (int i = 1; i < week; i++) {

System.out.print("\t");

}

//获取当月的最大天数

int maxDate = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

//循环打印天数

for (int i = 1; i <= maxDate; i++) {

//如果是当天,打印一个*

if(calendar.get(Calendar.DATE) == currentDate){

System.out.print("*");

}

//打印该天

System.out.print(i+"\t");

//如果是周六,打印换行

if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){

System.out.println();

}

//天数加一

calendar.add(Calendar.DATE,1);

}

} catch (ParseException e) {

e.printStackTrace();

}

System.out.println();

System.out.println("-------------------------------------------------------------------------------");

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值