HuTool学习

安装

在Maven项目中
在项目的pom.xml的dependencies中加入以下内容:


	cn.hutool
	hutool-all
	5.5.8

非Maven项目中
点击以下任一链接,下载hutool-all-X.X.X.jar即可:

  • Maven中央库1
  • Maven中央库2

注意 Hutool 5.x支持JDK8+,对Android平台没有测试,不能保证所有工具类或工具方法可用。 如果你的项目使用JDK7,请使用Hutool 4.x版本

常用方法

本文的所有代码均已上传GitHub,HuTool学习

类型转换

类型转换的工具类为Convert

转为字符串

		// int类型转换
		int aInt = 1023;
		String aStr = Convert.toStr(aInt);
		// aStr结果为1023
		System.out.println(aStr);
		// 数组进行转换
		int[] bArray = {1,2,3,4,5};
		String bStr = Convert.toStr(bArray);
		// bStr结果为[1, 2, 3, 4, 5]
		System.out.println(bStr);

转为指定类型数组

		String[] strArray = { "1", "0", "2", "3" };
		//结果为Integer数组
		Integer[] intArray = Convert.toIntArray(strArray);
		System.out.println(Convert.toStr(intArray));
		
		Integer[] intArray2 = {1,0,2,3};
		//结果为String数组
		String[] strArray2 = Convert.toStrArray(intArray2);
		System.out.println(Convert.toStr(strArray2));

转换为Date日期对象

		String date = "2000-10-23";
		//结果为Date日期对象
		Date value = Convert.toDate(date);
		System.out.println(value);

转化为List集合

		Object[] objectArray = {"lolly1023","lolly",1023};
		List list = Convert.convert(List.class, objectArray);
		System.out.println(list);
		// 4.1.11版本之后可使用toList
		List list2 = Convert.toList(objectArray);
		System.out.println(list2);

日期时间

日期时间的工具类为DateUtil

多种获取日期的方式

		// 获取当前时间的Date对象
		Date nowDate = DateUtil.date();
		System.out.println(nowDate);
		
		// 使用Calendar获取当前时间的Date对象
		Date nowDate2 = DateUtil.date(Calendar.getInstance());
		System.out.println(nowDate2);
		
		// 使用当前时间戳获取当前时间的Date对象
		Date nowDate3 = DateUtil.date(System.currentTimeMillis());
		System.out.println(nowDate3);
		
		// 使用工具类获取当前时间的字符串,格式为:yyyy-MM-dd HH:mm:ss
		String nowDateStr = DateUtil.now();
		System.out.println(nowDateStr);
		
		// 使用工具类获取当前时间的字符串,格式为:yyyy-MM-dd
		String todayDateStr= DateUtil.today();
		System.out.println(todayDateStr);

输出样式为:

2021-02-19 21:04:12
2021-02-19 21:04:12
2021-02-19 21:04:12
2021-02-19 21:04:12
2021-02-19

字符串转换为Date对象

字符串转为Date对象使用到了DateUtil工具类中的parse方法,该方法会自动识别一些日期的常用格式,例如:

  1. yyyy-MM-dd HH:mm:ss.SSS
  2. yyyy-MM-dd HH:mm:ss
  3. yyyy-MM-dd HH:mm
  4. yyyy-MM-dd
  5. HH:mm:ss
		// 字符串转为Date对象 
		String dateStr = "2000-10-23 12:30";
		Date date = DateUtil.parse(dateStr);
		// 输出2000-10-23 12:30:00
		System.out.println(date);
		
		// 也可以在转的时候指定格式
		Date date2 = DateUtil.parse(dateStr,"yyyy-MM-dd");
		// 输出2000-10-23 00:00:00
		System.out.println(date2);

格式化Date对象

		//格式化Date日期对象
		Date date4 = DateUtil.date();
		
		String format = DateUtil.format(date4, "yyyy年MM月dd日");
		// 输出为2021年02月19日
		System.out.println(format);
		
		String formatDate = DateUtil.formatDate(date4);
		// 常用格式化,输出为2021-02-19
		System.out.println(formatDate);
		
		String formatDateTime = DateUtil.formatDateTime(date4);
		// 精确到秒,结果为2021-02-19 21:16:09
		System.out.println(formatDateTime);
		
		String formatTime = DateUtil.formatTime(date4);
		// 只保留时分秒,结果为21:16:09
		System.out.println(formatTime);

获取Date对象的年月日

		// 获取Date对象的年月日
		Date date5 = DateUtil.date();
		// 获取年,结果为2021
		System.out.println(DateUtil.year(date5));
		// 获取月,结果为1(从0开始计数,0则为一月)
		System.out.println(DateUtil.month(date5));
		// 获取日(在本年)
		System.out.println(DateUtil.dayOfYear(date5));
		// 获取日(在本月)
		System.out.println(DateUtil.dayOfMonth(date5));
		// 获取日(在本周)
		System.out.println(DateUtil.dayOfWeek(date5));

开始和结束日期

用于计算开始时间和结束时间,有每天的,每月的,等等

		Date date3 = DateUtil.date();

		//一天的开始,结果:2021-02-19 00:00:00
		Date beginOfDay = DateUtil.beginOfDay(date3);
		System.out.println(beginOfDay);
		//一天的结束,结果:2021-02-19 23:59:59
		Date endOfDay = DateUtil.endOfDay(date3);
		System.out.println(endOfDay);
		//一月的开始,结果:2021-02-01 00:00:00
		Date beginOfMonth = DateUtil.beginOfMonth(date3);
		System.out.println(beginOfMonth);
		//一月的结束,结果:2021-02-28 23:59:59
		Date endOfMonth = DateUtil.endOfMonth(date3);
		System.out.println(endOfMonth);

日期时间的偏移

日期的减少或者添加,可以对时分秒天周月等进行更改

		String dateStr2 = "2000-10-23 12:30";
		Date date6 = DateUtil.parse(dateStr2);
		
		// 偏移10天
		DateTime newDate = DateUtil.offsetDay(date, 10);
		// 结果为2000-11-02 12:30:00
		System.out.println(newDate);
		// 偏移-10天
		DateTime newDate2 = DateUtil.offsetDay(date, -10);
		// 结果为2000-10-13 12:30:00
		System.out.println(newDate2);
		
		/**常用的偏移还有
		 * 月份 :DateUtil.offsetMonth(newDate2, offset)
		 * 周:DateUtil.offsetWeek(newDate2, offset)
		 */
		
		// 对比这种偏移,还有一种较简单的偏移方法
		//昨天
		System.out.println(DateUtil.yesterday());
		//明天
		System.out.println(DateUtil.tomorrow());
		//上周
		System.out.println(DateUtil.lastWeek());
		//下周
		System.out.println(DateUtil.nextWeek());
		//上个月
		System.out.println(DateUtil.lastMonth());
		//下个月
		System.out.println(DateUtil.nextMonth());

日期时间差

用于计算两个日期直接的时间差

		String dateStr3 = "2000-10-23 12:30:00";
		Date date7 = DateUtil.parse(dateStr3);

		Date date8 = DateUtil.date();

		// 计算2000-10-23距今多久:7424天
		long betweenDay = DateUtil.between(date7, date8, DateUnit.DAY);
		System.out.println(betweenDay);

计时器

		TimeInterval timer = DateUtil.timer();
		
		try {
			// 模拟耗时操作
			Thread.sleep(2000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		//花费毫秒数
		System.out.println(timer.interval());
		//返回花费时间,并重置开始时间
		System.out.println(timer.intervalRestart());
		//花费分钟数
		System.out.println(timer.intervalMinute());

星座与属相

这个功能还是挺出乎意料的,没想到还有这种

		// "天秤座"
		String zodiac = DateUtil.getZodiac(Month.OCTOBER.getValue(), 23);
		System.out.println(zodiac);
		// "龙"
		String chineseZodiac = DateUtil.getChineseZodiac(2000);
		System.out.println(chineseZodiac);

年龄与闰年判断

不得不说,这个工具类小玩意还挺多

		//年龄
		System.out.println(DateUtil.ageOfNow("2000-10-23"));

		//是否闰年
		System.out.println(DateUtil.isLeapYear(2000));

IO流相关

文件的拷贝

		// 文件的拷贝
		BufferedInputStream in = FileUtil.getInputStream("d:/桌面/HuTool学习.md");
		BufferedOutputStream out = FileUtil.getOutputStream("d:/桌面/HuTool学习复制.md");
		long copySize = IoUtil.copy(in, out, IoUtil.DEFAULT_BUFFER_SIZE);
		// 拷贝文件的大小
		System.out.println(copySize);
		System.out.println("拷贝成功");
		in.close();
		out.close();

文件类型判断

用于文件类型的判断,返回值为文件的类型

		File file = FileUtil.file("d:/桌面/HuTool学习.md");
		String type = FileTypeUtil.getType(file);
		//输出的是文件的格式
		Console.log(type);

文件监听

在以前,我们需要监听文件的变化:创建修改删除等,需要进行遍历来定时检查文件,效率很低,性能很差,所以有了这个工具类。
监听指定事件

		File file2 = FileUtil.file("example.properties");
		//这里只监听文件或目录的修改事件
		WatchMonitor watchMonitor = WatchMonitor.create(file2, WatchMonitor.ENTRY_MODIFY);
		watchMonitor.setWatcher(new Watcher(){
		    @Override
		    public void onCreate(WatchEvent event, Path currentPath) {
		        Object obj = event.context();
		        Console.log("创建:{}-> {}", currentPath, obj);
		    }

		    @Override
		    public void onModify(WatchEvent event, Path currentPath) {
		        Object obj = event.context();
		        Console.log("修改ÿ

你可能感兴趣的:(开发工具,java)