以下是相关需求
创建两个类DareDamo用来当做工具类, Test用来测试
工具类(DateDemo)
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* Date工具类
*/
public class DateDemo {
/**
* 用来处理字符串与Date类型的转换
* @param str
* @return
* @throws ParseException
*/
public static Date aoto(String str) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date parse = dateFormat.parse(str);
return parse;
}
/**
* 手动输入判断周几
* @param date
*
*/
public static void getday(Date date){
//格式化日期
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String format = dateFormat.format(date);
//将一周中的日期累出来1
String[] days = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
//获取日历对象
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//计算出一个星期的莫一天,0代表星期日
int d = calendar.get(Calendar.DAY_OF_WEEK) -1 <0 ?0 : calendar.get(Calendar.DAY_OF_WEEK) -1;
System.out.println(days[d]);
System.out.println(format+ "是"+ days[d]);
}
/**
* 获取输入日期的当月第一天
* @param date 手动输入日期
* @return
*/
public static void monthday(Date date){
//格式化日期
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
//获取日历类
Calendar calendar = Calendar.getInstance();
//将输入的日期存入日历类
calendar.setTime(date);
//将获取的日期set到日历类中
calendar.set(Calendar.DAY_OF_MONTH, 1);
System.out.println("输入日期的月份第一天为:" + dateFormat.format(calendar.getTime()));
}
/**
* 获取当前日期的月份的最后一天
* @param date
* @return
*/
public static void lastday(Date date){
//格式化日期
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
//获取日历类
Calendar calendar = Calendar.getInstance();
//将输入日期放入日历类
calendar.setTime(date);
//将获取的日期set到日历类中
calendar.set(Calendar.DATE, 1);
calendar.roll(Calendar.DATE,-1);
System.out.println("输入日期的最后一天为: " + dateFormat.format(calendar.getTime()));
}
/**
* 判断是否为闰年
* @param year
*/
public static void leapyear(int year){
if ((year % 4 == 0 && year % 100 != 00) || (year % 400 == 0)) {
System.out.println(year + ": 是一个闰年");
}else{
System.out.println(year + ": 是一个平年");
}
}
/**
* 输入出生日期计算年龄
* @param str
* @throws ParseException
*/
public static void birthday(String str) throws ParseException {
DateFormat format = new SimpleDateFormat("yyyy-mm-dd");
Date parse = format.parse(str);
//获取日历类
Calendar calendar=Calendar.getInstance();
//当前年份
int year = calendar.get(Calendar.YEAR);
//当前月份
int march = calendar.get(Calendar.MARCH + 1);
//当前日期
int day = calendar.get(Calendar.DAY_OF_MONTH);
calendar.setTime(parse);
//出生年份
int year2 = calendar.get(Calendar.YEAR);
//出生月份
int march2 = calendar.get(Calendar.MARCH + 1);
//出生日
int day2 = calendar.get(Calendar.DAY_OF_MONTH);
//判断输入日期不能大于当前日期
if (year2 > year){
System.err.println("错误!输入日期不能大于当前日期");
}else{
//计算出整岁数
int age =year - year2;
if (march <= march2){
if (day <= day2){
age --;
}
}
System.out.println("你的年龄是:" + age);
}
}
/**
* 当前时间
*/
public static void time(){
//获取当前日期和时间
Date date = new Date();
DateFormat format =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String format1 = format.format(date);
System.out.println("当前时间为: " +format1);
}
/**
* 日期格式转换
* @param str
* @throws ParseException
*/
public static void transition(String str) throws ParseException {
//获取日期格式化类
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date parse = format.parse(str);
System.out.println(str + " 转换后为: " + parse);
}
}
测试类(Test)
import java.text.ParseException;
import java.util.Date;
import java.util.Scanner;
/**
* 测试类
*/
public class Test {
public static void main(String[] args) throws ParseException {
boolean b = true;
while (b){
//功能列表
System.out.println("请根据所需功能 ,输入编号");
System.out.println("---------------------");
System.out.println("1.手动输入日期判断星期几 2.获取输入日期的当月第一天 3.获取输入日期当月最后一天 ");
System.out.println("4.输入日期判断是否为闰年 5.手动输入出生日期计算年龄 6.查看当前时间 ");
System.out.println("7.输入日期转换为Date类型 8.退出程序");
//键盘输入选择业务
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
try {
switch (i){
case 1:
System.out.println("请输入要查询的日期");
String next = scanner.next();
//调用工具类
Date aoto = DateDemo.aoto(next);
DateDemo.getday(aoto);
break;
case 2:
System.out.println("请输入要查询的日期");
String next1 = scanner.next();
//调用工具类
Date aoto1 = DateDemo.aoto(next1);
DateDemo.monthday(aoto1);
break;
case 3:
System.out.println("请输入要查询的日期");
String next2 = scanner.next();
//调用工具类
Date aoto2 = DateDemo.aoto(next2);
DateDemo.lastday(aoto2);
break;
case 4:
System.out.println("请输入要查询的年份");
int next3 = scanner.nextInt();
//调用工具类
DateDemo.leapyear(next3);
break;
case 5:
System.out.println("请输入出生日期");
String next4 = scanner.next();
//调用工具类
DateDemo.birthday(next4);
break;
case 6:
//调用工具类
DateDemo.time();
break;
case 7:
//调用工具类
System.out.println("请输入要转换的日期");
String next5 = scanner.next();
DateDemo.transition(next5);
break;
case 8:
System.out.println("谢谢使用,再见!");
b = false;
break;
default:
}
} catch (ParseException e) {
System.err.println(">>>>>>>输入有误,请重新输入!!<<<<<<<<<");
}
}
}
}
有关日期的工具类到此便写好了
若有疑问,或者需要博主改进的地方,请尽管提出!