目录
- 一、SimpleDateFormat使用
- 二、Calendar使用
一、SimpleDateFormat使用
使用Date直接输出日期时,是使用系统默认的格式输出,所以需要使用SimpleDateFormat来格式化日期。
那么SimpleDateFormat类怎么使用呢,我们需要先了解此类的格式化符号
y:代表年份
M:代表月份
d:代表月份中的那一天,也就是日
H:代表小时
m:代表分钟
s:代表秒
S:代表毫秒
所以使用时,需要使用这些字符来格式化日期
例如:你想显示日期格式为 2020-05-23 22:00:00 000
使用格式就应该为yyyy-MM-dd HH:mm:ss SSS
通过例子的形式来学习它如何使用
示例题目:你来这个世界多少天?
代码:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo26_SimpleDate {
public static void main(String[] args) throws ParseException {
/**
需求:你来这个世界多少天
* */
String born = "2003年11月1日";
String today = "2023年4月13日";
//定义日期格式化对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月DD日");
//将日期字符串转换成对象
Date d1 = sdf.parse(born);
Date d2 = sdf.parse(today);
//求出毫秒值
long time = d2.getTime() - d1.getTime();
System.out.println(time / 1000 / 60/ 60/24);
}
}
输出:
二、Calendar使用
Calendar是一个抽象类,我们无法直接实例化它,它有一个具体子类实体类java.util.GregorianCalendar,这个类实现的就是我们日常所用的公历历法,或者叫做阳历。我们可以直接使用new命令创建它的实例,或者使用Calendar类的getInstance方法来获得它实例.
Calendar c1 = Calendar.getInstance();
Calendar c2 = new GregorianCalendar();
// 参数含义依次为:年、月、日(、时、分、秒 ),
Calendar c3 = new GregorianCalendar(2008, 8, 8, 18, 10, 5);
示例代码:
import java.util.Calendar;
import java.util.Scanner;
public class Demo27_Calendar {
public static void main(String[] args){
test1();
test2(2);
test3();
// game();
}
public static void test1(){
Calendar c = Calendar.getInstance();//父类引用指向子类对象
System.out.println(c.get(Calendar.YEAR));
System.out.println(c.get(Calendar.MONTH)+1);//月份从零开始
System.out.println(c.get(Calendar.DAY_OF_MONTH));
System.out.println(c.get(Calendar.DAY_OF_WEEK));//周日是第一天,周六是最后一天
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日"+test2(c.get(Calendar.DAY_OF_WEEK)));
}
public static String test2(int week){
/**
将星期存储在表中进行查询
* */
String[] arr = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return arr[week];
}
public static void test3(){
Calendar c = Calendar.getInstance();//父类引用指向子类对象
c.add(Calendar.YEAR,1);//让年份加1
c.set(2025,1,2);//设置年月日
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日"+test2(c.get(Calendar.DAY_OF_WEEK)));
}
public static void game(){
/**
需求:键盘输入年份判断是闰年还是平年
* */
Scanner sc = new Scanner(System.in);
System.out.print("请输入年份:");
String line = sc.nextLine(); //录入数字字符串
int year = Integer.parseInt(line); //转换为数字
boolean b = getYear(year);
System.out.println(b);
}
public static boolean getYear(int year){
Calendar c = Calendar.getInstance();
c.set(year,2,1);
c.add(Calendar.DAY_OF_MONTH,-1);
return c.get(Calendar.DAY_OF_MONTH) == 29;
}
}