目录
1、时间相关的
2、文件相关
出来工作一段时间了,这里总结一下这3个月工作中使用过的工具类,以备以后使用,也分享给大家。
有时间会更新.....
1、时间相关的
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtils { private final static String FORMATSTRING = "yyyy-MM-dd HH:mm:ss";
public static String getTime(long ts) {
SimpleDateFormat formatter = new SimpleDateFormat(FORMATSTRING);
Date d = new Date(ts);
return formatter.format(d);
} public static long stringToLong(String strTime)
throws ParseException {
Date date = stringToDate(strTime);
if (date == null) {
return 0;
} else {
long currentTime = date.getTime();
return currentTime;
}
} public static Date stringToDate(String strTime)
throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat(FORMATSTRING);
Date date = null;
date = formatter.parse(strTime);
return date;
} /**
* 日期范围查询,开始日期的处理
* 将所传日期置为当天的0点
* @param startDate
* @return
*/
public static Date convertQueryStartDate(String startDate,String parsePattern) throws ParseException {
Date date = null;
date = stringToDate(startDate,parsePattern);
Date truncDate = dateTruncForType(date,1);
return truncDate;
} /**
* 日期范围查询,开始日期的处理
* type为日期的格式,年为2020 月为2020-02 日为2020-02-01
* @param startDate
* @param type 1年 2月 3日
* @return
* @throws ParseException
*/
public static Date convertQueryStartDate(String startDate,int type) throws ParseException {
Date date = getFirstDateByType(startDate,type);
Date truncDate = dateTruncForType(date,1);
return truncDate;
} /**
* 日期范围查询,开始日期的处理
* type为日期的格式,年为2020 月为2020-02 日为2020-02-01
* @param startDate
* @param type 1年 2月 3日
* @return
* @throws ParseException
*/
public static Date convertQueryEndDate(String startDate,int type) throws ParseException {
Date date= getLastDateByType(startDate,type);
Date nextDay = addDays(date,1);
return dateTruncForType(nextDay,1);
} /**
* 根据类型获取类型的最后一天
* 年为当前年的最后一天,月为当前月最后一天,日为当前日
* @param dateStr
* @param type
* @return
* @throws ParseException
*/
public static Date getLastDateByType(String dateStr,int type) throws ParseException {
String parsePattern = getDefaultParsePattern(type);
Date date = DateUtils.stringToDate(dateStr,parsePattern);
Date result = null;
//年需要获取当前年的第一天
if (type == 1) {
result = getCurrYearLast(date);
}
if (type == 2) {
result = getMonthLastDay(date);
}
if(type == 3) {
result =date;
}
if (result == null) {
throw new GlobalException(ResultCode.ILLEAGAL_STRING,"不支持的结束时间计算类型");
}
return result;
} public static Date getFirstDateByType(String dateStr,int type) throws ParseException{
String parsePattern = getDefaultParsePattern(type);
Date date = DateUtils.stringToDate(dateStr,parsePattern);
Date result = null;
//年需要获取当前年的第一天
if (type == 1) {
result = getCurrYearFirst(date);
}
if (type == 2) {
result = getMonthFirstDay(date);
}
if(type == 3) {
return date;
}
if (result == null) {
throw new GlobalException(ResultCode.ILLEAGAL_STRING,"不支持的开始时间计算类型");
}
return result;
} /**
* 日期范围查询,结束日期的处理
* 将日期置为第二天的0点
* @param startDate
* @param parsePattern
* @return
* @throws ParseException
*/
public static Date convertQueryEndDate(String startDate,String parsePattern) throws ParseException{
Date date = stringToDate(startDate,parsePattern);
Date nextDay = addDays(date,1);
return dateTruncForType(nextDay,1);
}
public static Date stringToDate(String strTime,String parsePattern) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat(parsePattern);
Date date = null;
date = formatter.parse(strTime);
return date;
}
/**
*截取到指定类型的日期,从时开始,到秒为止
* 如:2018-02-03 12:20:20 typ为1会返回2018-02-03
* @param date
* @param type
* @return
*/
public static Date dateTruncForType(Date date,int type){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
switch (type){
//毫秒
case 4:
calendar.set(Calendar.MILLISECOND, 0);
break;
//秒
case 3:
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
break;
//分
case 2:
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
break;
//时
case 1:
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
break;
default:
}
return calendar.getTime();
} public static String getCurrectTime() {
SimpleDateFormat formatter = new SimpleDateFormat(FORMATSTRING);
Date d = new Date();
return formatter.format(d);
} public static String getTimeByDate(Date d) {
SimpleDateFormat formatter = new SimpleDateFormat(FORMATSTRING);
return formatter.format(d);
} public static String getTimeByDate(Date d,String parsePattern) {
SimpleDateFormat formatter = new SimpleDateFormat(parsePattern);
return formatter.format(d);
} /**
* 13位时间戳转换为date
* @param timestamp
* @return
*/
public static Date getDate(Long timestamp){
return new Date(timestamp);
} public static long getCurrentTimeForIntFormat(){
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
Date d = new Date();
return Long.valueOf(formatter.format(d));
}
public static Date sqlTimestampToDate(Timestamp timestamp){
if(timestamp == null){
return null;
}
Date date = new Date(timestamp.getTime());
return date;
} public static Date addDays(Date date, int amount) {
return org.apache.commons.lang3.time.DateUtils.addDays(date,amount);
} public static int daysBetween(String begindate, String enddate) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(begindate));
long time1 = cal.getTimeInMillis();
cal.setTime(sdf.parse(enddate));
long time2 = cal.getTimeInMillis();
long between_days = (time2 - time1) / (1000 * 3600 * 24);
int days = Integer.parseInt(String.valueOf(between_days));
return days > 0 ? days : 0;
} public static String getDate(String date) {
return date.substring(0, 10);
} public static String getDateAfter(String date, int days) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(FORMATSTRING);
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(date));
cal.add(Calendar.DATE, days);
SimpleDateFormat formatter = new SimpleDateFormat(FORMATSTRING);
return formatter.format(cal.getTime());
} public static Date getDateAfter(Date date, int days) throws ParseException {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, days);
return cal.getTime();
} public static String getDateBefore(int ts,int calType) {
SimpleDateFormat sdf = new SimpleDateFormat(FORMATSTRING);
Calendar cal = Calendar.getInstance();
cal.add(calType, -ts);
SimpleDateFormat formatter = new SimpleDateFormat(FORMATSTRING);
return formatter.format(cal.getTime());
} public static String getDateAfter(int ts,int calType) {
SimpleDateFormat sdf = new SimpleDateFormat(FORMATSTRING);
Calendar cal = Calendar.getInstance();
cal.add(calType, ts);
SimpleDateFormat formatter = new SimpleDateFormat(FORMATSTRING);
return formatter.format(cal.getTime());
} public static boolean after(String date) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(FORMATSTRING);
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(date));
Calendar today = Calendar.getInstance();
return cal.after(today);
} public static boolean before(String date) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(FORMATSTRING);
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(date));
Calendar today = Calendar.getInstance();
return cal.before(today);
} public static boolean isValidDate(String dataString) {
SimpleDateFormat sdf = new SimpleDateFormat(FORMATSTRING);
try {
sdf.parse(dataString);
} catch (ParseException e) {
return false;
}
return true;
} public static boolean isPreDay(String date) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(FORMATSTRING);
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(date));
Calendar todayCal=Calendar.getInstance();
Date today = new Date();
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
todayCal.setTime(today);
return cal.before(todayCal);
} /**
* 获取当前月第一天
* @param date
* @return
*/
public static Date getMonthFirstDay(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH,1);
calendar.add(Calendar.MONTH,0);
return calendar.getTime();
} /**
* 获取当前月最后一天
* @param date
* @return
*/
public static Date getMonthLastDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, 0);
calendar.add(Calendar.MONTH, 1);
return calendar.getTime();
} /**
* 获取当年的最后一天
* @param date
* @return
*/
public static Date getCurrYearLast(Date date){
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
int currentYear = calendar.get(Calendar.YEAR);
return getYearLast(currentYear);
} /**
* 获取当前年的最后一天
* @param date
* @return
*/
public static Date getCurrYearFirst(Date date){
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
int currentYear = calendar.get(Calendar.YEAR);
return getYearFirst(currentYear);
} /**
* 获取某年第一天日期
* @param year 年份
* @return Date
*/
public static Date getYearFirst(int year){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
Date currYearFirst = calendar.getTime();
return currYearFirst;
}
/**
* 获取某年最后一天日期
* @param year 年份
* @return Date
*/
public static Date getYearLast(int year){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.roll(Calendar.DAY_OF_YEAR, -1);
Date currYearLast = calendar.getTime();
return currYearLast;
}
/**
* 获取默认时期格式化字符串
* type为时间所到精度
* @param type 1年 2月 3日 4时 5分 6秒
* @return
*/
public static String getDefaultParsePattern(int type){
String parsePattern = "";
switch (type) {
case 1:
parsePattern = "yyyy";
break;
case 2:
parsePattern = "yyyy-MM";
break;
case 3:
parsePattern = "yyyy-MM-dd";
break;
case 5:
parsePattern = "yyyy-MM-dd HH";
break;
case 6:
parsePattern = "yyyy-MM-dd HH:ss";
break;
case 7:
parsePattern = "yyyy-MM-dd HH:ss:mm";
break;
default:
throw new GlobalException(ResultCode.ILLEAGAL_STRING,"不支持的时间转换");
}
return parsePattern;
} public static void main(String[] args) throws ParseException {
String dates = "2020";
Date date = convertQueryStartDate(dates,1);
System.out.println(DateUtils.getTimeByDate(date,"yyyy-MM-dd"));
}
}
2、文件相关
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
@Slf4j
public class FileUtil {
/**
* 获取文件byte
* @param file
* @return
*/
public static byte[] getIFileStream(File file) {
byte[] buffer;
FileInputStream fis = null;
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
fis = new FileInputStream(file);
byte[] b = new byte[1024];
int n;
while ((n = fis.read(b)) != -1) {
bos.write(b, 0, n);
}
bos.close();
buffer = bos.toByteArray();
if(file.exists()) {
file.delete();
}
} catch (FileNotFoundException e) {
throw new GlobalException(e);
}catch (IOException e) {
throw new GlobalException(e);
} finally {
if(fis !=null){
try {
fis.close();
} catch (IOException e) {
log.error("fis关闭流错误{}",e);
}
}
}
return buffer;
}/**
* 获取网络图片进行Base64编码
*
* @param url 网络图片路径
* @return base64 编码g
* @throws Exception
*/
public static String getFileBase64(String url) {
if (url == null || "".equals(url.trim())) {
return null;
}
InputStream inStream = null;
try {
URL u = new URL(url);
// 打开图片路径
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
// 设置请求方式为GET
conn.setRequestMethod("GET");
// 设置超时响应时间为5秒
conn.setConnectTimeout(5000);
// 通过输入流获取图片数据
inStream = conn.getInputStream();
// 读取图片字节数组
byte[] bytes = IOUtils.toByteArray(inStream);
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
// 返回Base64编码过的字节数组字符串
return encoder.encode(bytes);
} catch (Exception e) {
throw new GlobalException(e);
}finally {
if(inStream !=null){
try {
inStream.close();
} catch (IOException e) {
log.error("inStream关闭流错误{}",e);
}
}
}
}/**
* 二进制流转换为base64
* @param bytes
* @return
*/
public static String getFileBase64(byte[] bytes) {
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
// 返回Base64编码过的字节数组字符串
return encoder.encode(bytes);
}/**
* 文件流strBase64数组转 InputStream
* @param strBase64 文件流strBase64数组
* @return
*/
public static InputStream base64InputStream(String strBase64) {
String string = strBase64;
try {
// 解码,然后将字节转换为文件,将字符串转换为byte数组
byte[] bytes = new BASE64Decoder().decodeBuffer(string);
return new ByteArrayInputStream(bytes);
} catch (IOException ioe) {
throw new GlobalException(ioe);
}
}public static byte[] base64Byte(String strBase64) {
try {
byte[] bytes = new BASE64Decoder().decodeBuffer(strBase64);
return bytes;
} catch (IOException ioe) {
throw new GlobalException(ioe);
}
}}
【tools|开发常用工具类】
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)