Date
//Date类是一个JDK写好的Javabean的类,用来描述时间,精确到毫秒
//Date可以利用空参构造创建对象,表示当前时间 Public Date()
//Date可以利用带参构造创建指定的对象 public Date(long date)
//1.空参构造
Date d = new Date();
System.out.println(d); //Tue Sep 12 21:02:12 CST 2023 默认为电脑当前时间
//2.带参构造
Date d2 = new Date(0L); //参数为0代表 1970.1.1 因为是long类型要加L
System.out.println(d2); //Thu Jan 01 08:00:00 CST 1970
//Date可以利用setTime/getTime 来设置/修改毫秒值和获取时间对象的毫秒值
//public void setTime(long time)
//public long getTime() 获取时间对象的毫秒值
//3.setTime 修改时间
//1000毫秒=1s
Date d2 = new Date(0L);
d2.setTime(1000L); //给d2加上1000毫秒
System.out.println(d2); //Thu Jan 01 08:00:01 CST 1970
//4.getTime获取当前时间的毫秒值
long time = d2.getTime();
System.out.println(time); //1000
SimpleDateFormat
//该类的主要作用是将时间格式化和解析
// 格式化自己喜欢的模式如:2023年10月1日 2023-10-1
//解析把字符串表示的时间变成Date对象
//public SimpleDateFormat() 构造一个SimpleDateFormat默认格式 //public SimpleDateFormat(String pattern) 指定格式 //常用方法 public final String format(Date date) 格式化(日期对象->字符串) //public Date parse(String source) 解析(字符串->日期对象)
//1.利用空参构造创建SimpleDateFormat
SimpleDateFormat sdf1 = new SimpleDateFormat();
Date d1 = new Date(0L);
String str1 = sdf1.format(d1);
System.out.println(str1); //1970/1/1 上午8:00
//2.利用带参构造创建SimpleDateFormat()对象
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str2 = sdf2.format(d1);
System.out.println(str2); //1970年01月01日 08:00:00
//练习 :yyyy年MM月dd日 时:分:秒 星期 E代表的是星期 不同的格式有对应的字母在带参构造时末尾
加上对应字母就会显示对应数据
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss E"); //E 星期
String str3 = sdf3.format(d1);
System.out.println(str3); //1970年01月01日 08:00:00 周四
//还可以将我们给定的字符串转换为时间
//1.定义一个字符串表示时间
String str = "2023-11-11 11:11:11";
//2.利用带参构造创建SimpleDateFormat()对象
//细节
//创建对象的格式要跟字符串格式完全一样
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//改变:可以变换格式
Date date = sdf.parse(str); //将str解析成日期对象
System.out.println(date); //Sat Nov 11 11:11:11 CST 2023
System.out.println(date.getTime()); //1699672271000
Calendar
//Calendar表示什么 : 表示一个时间的日历对象
//底层原理:会根据系统的不同时区来获取当前日历对象,默认表示当前时间 //会把时间中的纪元,年,月,日,时,秒,星期,等等的都放到一个数组当中
//Calendar代表了系统当前时间的日历对象,可以单独修改、获取年、月、日
//Calendar是一个抽象类,不能直接new创建 要通过getInstance获取
//get() :0:纪元 1:年 2:月 3:一年中的第几周 4:一个月中的几周 5:一个月中第几天
//java在Calendar,把索引对应的数字都变成常量了
Calendar c = Calendar.getInstance(); //获取Calendar对象
c.set(Calendar.YEAR, 2000); //用set方法改变Calendar的值
c.set(Calendar.MONTH, 11);
c.set(Calendar.DAY_OF_MONTH, 10);
int year = c.get(Calendar.YEAR); //用get方法获取值
int month = c.get(Calendar.MONTH) + 1;// 1970 1 1 月份要加1 因为范围是0~11
int date = c.get(Calendar.DATE);
int week = c.get(Calendar.DAY_OF_WEEK);
c.add(Calendar.MONTH, 1);
System.out.println(year + "," + month + "," + date + "," + week); // 1970 1 1
//用getTime和setTime给Calendar设置 此处用的Date
Calendar c = Calendar.getInstance();
Date d = new Date(0L);
c.setTime(d);
System.out.println("current time is " + c.getTime());
c.setTimeInMillis(50000);
System.out.println("After setting time " + c.getTime());
//current time is Thu Jan 01 08:00:00 CST 1970
//After setting time Thu Jan 01 08:00:50 CST 1970
//get() :0:纪元 1:年 2:月 3:一年中的第几周 4:一个月中的几周 5:一个月中第几天
//java在Calendar,把索引对应的数字都变成常量了
Calendar c = Calendar.getInstance(); //获取Calendar对象
c.set(Calendar.YEAR, 2000); //用set方法改变Calendar的值
c.set(Calendar.MONTH, 11);
c.set(Calendar.DAY_OF_MONTH, 10);
int year = c.get(Calendar.YEAR); //用get方法获取值
int month = c.get(Calendar.MONTH) + 1;// 1970 1 1 月份要加1 因为范围是0~11
int date = c.get(Calendar.DATE);
int week = c.get(Calendar.DAY_OF_WEEK);
c.add(Calendar.MONTH, 1);
System.out.println(year + "," + month + "," + date + "," + week); // 1970 1 1
public class Calendardemo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance(); //获取Calendar对象
c.set(Calendar.YEAR, 2000); //用set方法改变Calendar的值
c.set(Calendar.MONTH, 11);
c.set(Calendar.DAY_OF_MONTH, 10);
int year = c.get(Calendar.YEAR); //用get方法获取值
int month = c.get(Calendar.MONTH) + 1;// 1970 1 1 月份要加1 因为范围是0~11
int date = c.get(Calendar.DATE);
int week = c.get(Calendar.DAY_OF_WEEK);
c.add(Calendar.MONTH, 1);
System.out.println(year + "," + month + "," + date + "," + getWeek(week));
// 2000,12,10,星期日
}
//在Java里使用的国外的星期天为一周的第一天
//所以我们可以创建一个方法来运用查表法来让星期变成我们熟悉的星期几
public static String getWeek(int index) {
String[] arr = {"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
return arr[index];
}
}