日期处理类
package date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class MyDate {
public static void main(String[] args) {
//一、Date
//1、初始化: a 无参构造,放回的当前时间的时间
// b 有参构造,传入指定的毫秒数(距离格尼林治时间的毫秒数)
System.out.println("1、初始化的两种形式");
Date date01 = new Date(); //
Date date02 = new Date(1677658832000L); //2023-03-01 16:20:32
//2、获取日期对应的时间戳
System.out.println("2、获取日期对应的时间戳 ms");
System.out.println(date01.getTime());
//3、比较是否两个日期是否相等
System.out.println("3、比较是否两个日期是否相等");
System.out.println(date01.equals(date02));
//4、判断时间的先后顺序
System.out.println("4、判断时间的先后顺序");
System.out.println(date01.before(date02));
System.out.println(date01.after(date02));
//二、时区TimeZone
TimeZone tz = TimeZone.getDefault();
System.out.println(tz.getID());
TimeZone beijingTz = TimeZone.getTimeZone("GMT+8:00");
//三、国家和语言 Locale
//其主要有两个参数: 一个是国家,一个是语言
//中国的代码是CN, 中文语言的代码是zh
Locale locale = Locale.getDefault();
System.out.println(locale.toString());
//四、Calender
//其实日期和时间操作的主要的类,与时区和地区有关。
//注意:
//月份是从0开始的,需要+1
//每周的开始是周日,所以周六是7
System.out.println("日历类:");
Calendar calendar = Calendar.getInstance();
System.out.println("year:" + calendar.get(Calendar.YEAR));
System.out.println("month:" + (calendar.get(Calendar.MONTH) + 1));
System.out.println("day:" + calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("hour:" + calendar.get(Calendar.HOUR));
System.out.println("minute:" + calendar.get(Calendar.MINUTE));
System.out.println("second:" + calendar.get(Calendar.SECOND));
System.out.println("dayofweek:" + (calendar.get(Calendar.DAY_OF_WEEK)));
//Calender的强大之处是会对数据做自动调整
//比如如果当前月份是1月31日,如果对月份加1, 则会自动计算31天,则会展示3月3日, 实际上并不是加了1个月。需要特殊注意
Calendar c = Calendar.getInstance();
c.set(Calendar.MONTH, 1);
c.set(Calendar.DAY_OF_MONTH, 31);
c.add(Calendar.MONTH, 1);
System.out.println("2023年1月31号加1个自然月的值 之后的月份: " + c.get(Calendar.MONTH) + " 月 "+ c.get(Calendar.DAY_OF_MONTH) + "号");
//roll方法, roll与add方法的区别,就是roll进行设置值的时候,不会改变范围更大的值
//距离,如果是当前时间是12:57
//对分钟数+4, 使用add ==> 13:01(会导致小时发生进位)
// 使用roll ==> 12:01c.get(Calendar.MINUTE)
System.out.println("" + c.get(Calendar.HOUR_OF_DAY) + " " + c.get(Calendar.MINUTE));
c.set(Calendar.HOUR_OF_DAY, 12);
c.set(Calendar.MINUTE, 57);
c.add(Calendar.MINUTE, 4);
// c.roll(Calendar.MINUTE, 4);
System.out.println("" + c.get(Calendar.HOUR_OF_DAY) + " " + c.get(Calendar.MINUTE));
//五、SimpleDateFormat
//一句话讲述它的作用: 用于Date和String字符转换
//yyyy表示4位数表示年份
//MM表示两位数表示月份
//E 表示的是星期几
// a 表示的是上午或下午
Calendar cs = Calendar.getInstance();
cs.set(2023,04,02,17,01,20);
//1. date ==> String
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E a");
String now = sdf.format(cs.getTime());
System.out.println("当前日期是:" + now);
//2.String ==> date
String str = "2023-04-02 17:00:45.456";
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
try{
Date date = sd.parse(str);
System.out.println(sd.format(date));
}catch (ParseException e) {
e.printStackTrace();
}
}
}