2.JAVA中常用的工具方法

1.日期常用


1.1 获取当前日期LocalDateTime

 		 //获取当前时间 2021-11-26 09:23:21
        System.out.println(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        //获取当前年YYYY-MM-DD
        System.out.println(LocalDate.now());
        //获取当前时间HH:mm:ss
        System.out.println(LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss")));
        //获取年月日   时分秒  当前时间星期几
        System.out.println("年:" + LocalDate.now().getYear());
        System.out.println("月:" + LocalDate.now().getMonthValue());
        System.out.println("日:" + LocalDate.now().getDayOfMonth());
        System.out.println("小时:" + LocalDateTime.now().get(ChronoField.HOUR_OF_DAY));
        System.out.println("分:" + LocalDateTime.now().get(ChronoField.MINUTE_OF_HOUR));
        System.out.println("秒:" + LocalDateTime.now().get(ChronoField.SECOND_OF_MINUTE));
        System.out.println("星期几:" + LocalDateTime.now().get(ChronoField.DAY_OF_WEEK));
        System.out.println("判断是否是润年(返回Boolean类型):" + LocalDate.now().isLeapYear());
        
        //得到一个localData格式时间日期
        LocalDate date4 = LocalDate.of(2021, 11, 26);
        LocalTime date2 = LocalTime.of(12, 30, 00);
        //比较两个日期
        System.out.println(date4.equals(date2));

1.2对日期进行操作LocalDateTime

        //加天  + 加日  +加年
        System.out.println(LocalDateTime.now().plusHours(2).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        System.out.println(LocalDateTime.now().plusDays(2).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        System.out.println(LocalDateTime.now().plusYears(2).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        //加1星期也就是加7天
        System.out.println(LocalDateTime.now().plusWeeks(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

        LocalDateTime date1 = LocalDateTime.of(2021, 11, 26, 12, 30, 00);
        LocalDateTime date3 = LocalDateTime.of(2021, 9, 26, 12, 30, 00);
        //date1 是在date3之后 返回true
        System.out.println(date1.isAfter(date3));
        //date1 不在date3之前 返回false
        System.out.println(date1.isBefore(date3));

        //相差 年  月  日  小时 分钟  秒
        System.out.println("ChronoUnit.DAYS.between计算出的天数时间差:" + ChronoUnit.YEARS.between(date3, date1));
        System.out.println("ChronoUnit.DAYS.between计算出的天数时间差:" + ChronoUnit.MONTHS.between(date3, date1));
        System.out.println("ChronoUnit.DAYS.between计算出的天数时间差:" + ChronoUnit.DAYS.between(date3, date1));
        System.out.println("ChronoUnit.DAYS.between计算出的天数时间差:" + ChronoUnit.HOURS.between(date3, date1));
        System.out.println("ChronoUnit.DAYS.between计算出的天数时间差:" + ChronoUnit.MINUTES.between(date3, date1));
        System.out.println("ChronoUnit.DAYS.between计算出的天数时间差:" + ChronoUnit.SECONDS.between(date3, date1));
        
        //日期date转string  string转date 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        String strTime = sdf.format(new Date());  
        Date dateTime= sdf.parse("2021-01-01");

1.3日期的一些常用转换

  		//String-->LocalDateTime
        LocalDateTime parse = LocalDateTime.parse("2021-11-12 12:30:10", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        //long--->LocalDateTime
        System.out.println(LocalDateTime.ofInstant(Instant.ofEpochMilli(1637896436195L), ZoneId.systemDefault()));
        //LocalDateTime-->long
        System.out.println(Timestamp.valueOf(LocalDateTime.now()).getTime());
        //LocalDateTime-->Date
        System.out.println(Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant()));

2.密码加密操作


2.1MD5+随机盐密码加密

用的依赖

		<dependency>
			<groupId>cn.hutool</groupId>
			<artifactId>hutool-all</artifactId>
			<version>5.6.5</version>
		</dependency>
public class PasswordUtil {

    /**
     * 随机盐密码生成长度
     */
    private static final int PASSWORD_AND_SALT_LENGTH = 32;

    /**
     * 生成随机盐
     *
     * @return
     */
    public static String createRandomKet() {
        return IdUtil.simpleUUID();
    }

    /**
     * 生成含有随机盐的密码.
     *
     * @param salt     随机盐
     * @param password 密码
     * @return 含有随机盐的密码 MD5 值
     */
    public static String generate(String password, String salt) {
        password = DigestUtil.md5Hex(password + salt);
        char[] md5 = new char[PASSWORD_AND_SALT_LENGTH];
        for (int i = 0; i < PASSWORD_AND_SALT_LENGTH; i++) {
            md5[i] = password.charAt(i / 2);
            md5[++i] = salt.charAt(i / 2);
        }
        return new String(md5);
    }


    /**
     * 校验密码
     *
     * @param md5Password 根据正确密码加密后的md5密码
     * @param password    登录时输入的密码
     * @param salt        密码随机盐
     * @return true/false
     */
    public static boolean checkPassword(String md5Password, String password, String salt) {
        if (md5Password.equals(generate(password, salt))) {
            return true;
        }
        return false;
    }
    
}

3.流操作

3.1输入流合并

  import java.io.SequenceInputStream;

  public InputStream inputStreamMerge(String account, InputStream inputStream2) {
        String sql = "ALTER SESSION SET CURRENT_SCHEMA = " + account + "; ";
       	//让sql这个字符串 插入到inputStream2 流前面
        InputStream inputStreams = new ByteArrayInputStream(sql.getBytes());
        SequenceInputStream sequenceInputStream = new SequenceInputStream(inputStreams, inputStream2);
        return sequenceInputStream;
    }

4.文件操作

MultipartFile 文件模拟方法

1、MockMultipartFile的构造函数
MockMultipartFile的构造函数有4种形式。

    String name = 'test.txt';
    String originalFilename = 'test.txt';
    String contentType = 'text/plain';
    byte[] content = 'test content'.getBytes();

MultipartFile file = new MockMultipartFile(String name, String originalFilename,String contentType, byte[] content)

其中name为上传文件的参数名,originalFilename为上传文件的原始文件名,contentType为上传文件的类型,content为上传文件的二进制数据。

MultipartFile file = new MockMultipartFile(String name, InputStream contentStream,String originalFilename, String contentType)

其中name为上传文件的参数名,contentStream为上传文件的输入流,originalFilename为上传文件的原始文件名,contentType为上传文件的类型。

MultipartFile file = new MockMultipartFile(String name, Resource resource)

其中name为上传文件的参数名,resource为上传文件的Spring中的Resource对象,它是Spring中对资源文件的抽象表示。

MultipartFile file = new MockMultipartFile(String name, MockMultipartFile multipartFile)

其中name为上传文件的参数名,multipartFile为上传文件的另一个MockMultipartFile对象。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MM-BD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值