DateUtil时间工具类及时间类型使用(Date、Calendar 、ZonedDateTime)

DateUtil:

//当前时间 结果:2023-06-07 00:00:00
Date date = DateUtil.date();
//当前时间 结果:2023-06-07 00:00:00
Date date2 = DateUtil.date(Calendar.getInstance());
//当前时间 结果:2023-06-07 00:00:00
Date date3 = DateUtil.date(System.currentTimeMillis());
//当前时间字符串,格式:yyyy-MM-dd HH:mm:ss
String now = DateUtil.now();
//当前日期字符串,格式:yyyy-MM-dd
String today= DateUtil.today();


//DateUtil.parse方法可以自动识别常用格式
String dateStr = "2023-06-07";
Date date = DateUtil.parse(dateStr);
//自定义日期格式转化
String dateStr = "2023-06-07";
Date date = DateUtil.parse(dateStr, "yyyy-MM-dd");


//获取Date对象的某个部分
Date date = DateUtil.date();
//获得年的部分
DateUtil.year(date);
//获得月份,从0开始计数
DateUtil.month(date);
//获得月份枚举
DateUtil.monthEnum(date);


//当日开始和结束时间
String dateStr = "2023-06-07 00:00:00";
Date date = DateUtil.parse(dateStr);
//一天的开始,结果:2023-06-07 00:00:00
Date beginOfDay = DateUtil.beginOfDay(date);
//一天的结束,结果:2023-06-07 23:59:59
Date endOfDay = DateUtil.endOfDay(date);


//日期或时间的偏移指针对某个日期增加或减少分、小时、天
String dateStr = "2023-06-07 10:05:52";
Date date = DateUtil.parse(dateStr);

//结果:2023-06-09 10:05:52
Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);
//常用偏移,结果:2023-06-10 10:05:52
DateTime newDate2 = DateUtil.offsetDay(date, 3);
//常用偏移,结果:2023-06-07 07:05:52
DateTime newDate3 = DateUtil.offsetHour(date, -3);


//针对当前时间,提供了简化的偏移方法(例如昨天、上周、上个月等)
//昨天
DateUtil.yesterday()
//明天
DateUtil.tomorrow()
//上周
DateUtil.lastWeek()
//下周
DateUtil.nextWeek()
//上个月
DateUtil.lastMonth()
//下个月
DateUtil.nextMonth()


//两Date类型时间差
DateUtil.between(happenTime(),recoverTime(), DateUnit.SECOND);


//扩展
//星座
String zodiac = DateUtil.getZodiac(Month.JANUARY.getValue(), 19);
//属相
String chineseZodiac = DateUtil.getChineseZodiac(1999);
//年龄
DateUtil.ageOfNow("2000-01-30");
//是否闰年
DateUtil.isLeapYear(2023);

ZonedDateTime:表示一个带时区的日期和时间

// 默认时区
ZonedDateTime zbj = ZonedDateTime.now(); 
// 用指定时区获取当前时间
ZonedDateTime zny = ZonedDateTime.now(ZoneId.of("America/New_York"));


//注:涉及到时区时,千万不要自己计算时差,否则难以正确处理夏令时。
// 以中国时区获取当前时间:
ZonedDateTime zbj = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));
// 转换为纽约时间:
ZonedDateTime zny = zbj.withZoneSameInstant(ZoneId.of("America/New_York"));

//从默认时区中的系统时钟中获取当前日期时间
static ZonedDateTime now() 

//从指定的时钟中获取当前日期时间
static ZonedDateTime now(Clock clock) 
 
//从指定时区中的系统时钟中获得当前日期时间  
static ZonedDateTime now(ZoneId zone) 

//获得 ZonedDateTime实例从年,月,日,小时,分钟,秒,纳秒和时区
static ZonedDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond, ZoneId zone) 
  
//获得 ZonedDateTime实例从本地日期和时间
static ZonedDateTime of(LocalDate date, LocalTime time, ZoneId zone) 
 
//获得 ZonedDateTime实例从本地日期时间
static ZonedDateTime of(LocalDateTime localDateTime, ZoneId zone) 
  
//获得 ZonedDateTime实例从一个文本字符串,如 2007-12-03T10:15:30+01:00[Europe/Paris]
static ZonedDateTime parse(CharSequence text) 

//获得 ZonedDateTime实例从使用特定格式的文本字符串
static ZonedDateTime parse(CharSequence text, DateTimeFormatter formatter) 
   
//返回此日期时间的副本,以不同的时区,保留即时
ZonedDateTime withZoneSameInstant(ZoneId zone) 

时间类: 

        //日期类 类之后是对象
		Date date=new Date();
		System.out.println(date);
		//获得年 year 1900-当前时间差
		System.out.println(date.getYear());
		//获得月 month 0-11代表1-12
		System.out.println(date.getMonth());
		//获得日 date
		System.out.println(date.getDate());
		//获得时 hours
		System.out.println(date.getHours());
		//获得分 minutes
		System.out.println(date.getMinutes());
		//获得秒 seconds
		System.out.println(date.getSeconds());
		//获得星期 day
		System.out.println(date.getDay());
		//获得毫秒 time 1970-当前时间毫秒值
		System.out.println(date.getTime());
       
 
       //循环某个东西一千次需要多久
		Date date1 = new Date();
		long time1 =date1.getTime();
	    for(int h=0;h<1000;h++) {
			System.out.println(h);
		}
		Date date3 =new Date();
		long time2 =date3.getTime();
	    System.out.println(time2-time1);
	    //出生到现在经历了多少天 
	    long a=date2.getTime();
	    long b=date.getTime();
	    long c=b-a;
	    System.out.println(c/1000/60/60/24);
 
        //把date类转成String类 日期格式化
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		String aString = dateFormat.format(date);
		System.out.println(aString);
				
		//把String类解析date类
		String bir="2000-01-31";
		Date date2 = dateFormat.parse(bir);
		System.out.println(date2.getDay());
		System.out.println(date2.getDate());
		System.out.println(date2.getTime());
		System.out.println(System.currentTimeMillis());
  
        //日历类 
        //不需要new 直接调取方法
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);
		//获取年		System.out.println(calendar.get(calendar.YEAR)+"年");
		//获取月		System.out.println((calendar.get(calendar.MONTH)+1)+"月");
		//获取日		System.out.println(calendar.get(calendar.DAY_OF_MONTH)+"日");
		//获取时		System.out.println(calendar.get(calendar.HOUR_OF_DAY)+"时");
		//获取分		System.out.println(calendar.get(calendar.MINUTE)+"分");
		//获取秒		System.out.println(calendar.get(calendar.SECOND)+"秒");

 String:

    String a=" 1225 欢迎来到德莱联盟 LOL ";
	char b=a.charAt(3);//根据索引返回字符
	System.out.println(b);
		
	boolean c=a.contains("德莱"); //是否包含
	System.out.println(c);
	
	boolean d=a.endsWith("5欢"); //结束语
	System.out.println(d);
		
	boolean e=a.equals("1225欢迎来到德莱联盟LOL");//全部相同
	System.out.println(e);
	if (a.equals("a")) ;	
		
	boolean f=a.equalsIgnoreCase("1225欢迎来到德莱联盟lol"); //全部相同可以忽略大小写
	System.out.println(f);
	
	int g=a.indexOf("欢");//字符返回索引
	System.out.println(g);
	
	String aa="";
	boolean h=aa.isEmpty();//该字符串是否为空
	System.out.println(h);
	
	String i=a.replace("1225", "0131");//替换,可多个替换
	System.out.println(i);
	
	String[] j=a.split("欢");//分割数组,显示在内存上的地址,需要遍历
	for(int x=0;x>j.length;x++) {
		System.out.println(j[x]);
	}
	String kString=a.substring(5,8);//截取,包前不包后
	System.out.println(kString);
	
	char[]  l=a.toCharArray();//字符数组
    System.out.println(l);
    for(int xx=0;xx<l.length;xx++) {
    	System.out.println(l[xx]);
    }
    String m=a.toLowerCase();//英文变小写
    String n=a.toUpperCase();//英文变大写
	System.out.println(m);
	
	String o=a.trim();//去除前后空格
	System.out.println(o);
	
	String p=a.concat("小小炮娘没有烦恼");//往后拼接字符串
	System.out.println(p);
	
	byte[] q=a.getBytes();//转换二进制数组
	for(int bb=0;bb<p.length();bb++) {
		System.out.println(q[bb]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值