在项目开发中,经常会涉及到对日期、时间的各种操作,若是直接使用JDK相关类个人感觉还是十分不便的;所以自己针对在项目中经常使用到的一些操作写了个工具类。
public class DateUtils {
/**
* 获取当前时间日期的字符串
*/
public static String getCurrentDateStr(DateFormatType dateFormatType) {
Date date = getCurrentDate();
return (String) OpearationDate(date, dateFormatType.getValue());
}
/**
* 时间、日期格式化成字符串
*/
public static String formatDate(Date date, DateFormatType dateFormatType) {
return (String) OpearationDate(date, dateFormatType.getValue());
}
/**
* 从字符串解析成时间、日期
*/
public static Date parseDate(String dateStr, DateFormatType dateFormatType) {
return (Date) OpearationDate(dateStr, dateFormatType.getValue());
}
/**
* 获取当前系统时间(原始格式)
*/
public static Date getCurrentDate() {
Date date = new Date(System.currentTimeMillis());
return date;
}
/**
* 获取当前日期的年、月、日、时、分、秒
*/
public static int getCurrentTime(TimeFormatType timeFormatType) {
return getTime(getCurrentDate(), timeFormatType);
}
/**
* 获取指定日期的年、月、日、时、分、秒
*/
public static int getTime(Date date, TimeFormatType timeFormatType) {
try {
Calendar c = Calendar.getInstance();
c.setTime(date);
int type = timeFormatType.getValue();
int i = c.get(type);
return type == 2 ? i + 1 : i;
} catch (Exception e) {
throw new RuntimeException("获取失败", e);
}
}
/**
* 获取指定日期的毫秒数
*/
public static long getMillis(Date date) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
/**
* 日期相加、减操作
*
* 所返回结果单位为:天数
*/
public static int operationDate(Date date, Date diffDate, DateOperationType dateOperationType) {
long add = getMillis(date) + getMillis(diffDate);
long diff = getMillis(date) - getMillis(diffDate);
return (int) ((dateOperationType.getValue() ? add : diff) / (24 * 3600 * 1000));
}
/**
* 日期月份相加、减操作
*/
public static Date operationDateOfMonth(Date date, int month, DateOperationType dateOperationType) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.MONTH, dateOperationType.getValue() ? month : month - (month * 2));
return c.getTime();
}
/**
* 日期天数相加、减操作
*/
public static Date operationDateOfDay(Date date, int day, DateOperationType dateOperationType) {
Calendar c = Calendar.getInstance();
c.setTime(date);
long millis = c.getTimeInMillis();
long millisOfday = day * 24 * 3600 * 1000;
long sumMillis = dateOperationType.getValue() ? (millis + millisOfday) : (millis - millisOfday);
c.setTimeInMillis(sumMillis);
return c.getTime();
}
private static Object OpearationDate(Object object, String formatStr) {
if (object == null || null == formatStr || "".equals(formatStr)) {
throw new RuntimeException("参数不能为空");
}
SimpleDateFormat format = new SimpleDateFormat(formatStr);
try {
if (object instanceof Date)
return format.format(object);
else
return format.parse(object.toString());
} catch (Exception e) {
throw new RuntimeException("操作失败", e);
}
}
public enum DateOperationType {
/**
* 加操作
*/
ADD(true),
/**
* 减操作
*/
DIFF(false);
private final boolean value;
DateOperationType(boolean operation) {
this.value = operation;
}
public boolean getValue() {
return value;
}
}
public enum TimeFormatType {
YEAR(1), MONTH(2), DAY(5), HOUR(11), MINUTE(12), SECOND(13);
private final int value;
TimeFormatType(int formatStr) {
this.value = formatStr;
}
public int getValue() {
return value;
}
}
public enum DateFormatType {
/**
* 格式为:yyyy-MM-dd HH:mm:ss
*/
DATE_FORMAT_STR("yyyy-MM-dd HH:mm:ss"),
/**
* 格式为:yyyyMMddHHmmss
*/
SIMPLE_DATE_TIME_FORMAT_STR("yyyyMMddHHmmss"),
/**
* 格式为:yyyy-MM-dd
*/
SIMPLE_DATE_FORMAT_STR("yyyy-MM-dd"),
/**
* 格式为:yyyy/MM/dd
*/
SIMPLE_DATE_FORMAT_VIRGULE_STR("yyyy/MM/dd"),
/**
* 格式为:HH:mm:ss
*/
HOUR_MINUTE_SECOND("HH:mm:ss"),
/**
* 格式为:HH:mm
*/
HOUR_MINUTE("HH:mm");
private final String value;
DateFormatType(String formatStr) {
this.value = formatStr;
}
public String getValue() {
return value;
}
}
}
我还是个菜鸟,写的不好之处还请各位多多指正......
分享到:
相关推荐
总结来说,"java常用工具类集合"是一个涵盖了多种实用工具类的资源,包括但不限于字符串处理、集合操作、日期时间、IO操作等多个方面。通过学习和应用这些工具类,开发者能够更高效地编写代码,同时也能从开源社区中...
本资源分享了28个Java常用的工具类源码,涵盖了多种实用功能,包括添加水印、文件上传、生成略缩图、文件操作、MD5加密、时间日期处理、字符串操作以及过滤器和数据导出到Excel。 1. **添加水印**:在图像处理中,...
在C#编程中,工具类(Utility Class)是一种常见的设计模式,它封装了一些常用的功能,以便在项目中方便地重复使用。"MJ.Util"、"MJ.Util.Extension"和"MJ.Util.Model"这三个文件名暗示了这个压缩包可能包含了C#中的...
这个“Java常用工具类”压缩包,作为一个经验丰富的开发者分享的资源,无疑是提高开发效率、减少重复工作的好帮手。它可以帮助开发者快速集成和复用代码,减少错误,提高代码质量。在使用这些工具类时,注意阅读文档...
1、常用的日期类操作 2、excel操作 3、xml操作 4、集成科大讯飞语言合成工具类; 5、集合类操作(list,map,array) 6、FTP工具类 7、csv操作 8、file文件类操作 9、拼音工具类 10、线程池 11、Unicode编码 12、...
Objective-C的工具类往往包括字符串处理、数组和字典操作、日期和时间处理、网络请求、JSON解析、图片处理等多个方面。 1. **字符串处理**:工具类可能包含一些对NSString的扩展,比如格式化、验证、清理空格和特殊...
"个人使用常用工具类提交"这个标题可能指的是某位开发者分享了自己常用的工具类集合,供他人参考或使用。 描述中的“个人使用常用工具类提交”表明这是一个个人整理的工具类库,可能包含了开发者在项目中频繁使用的...
这位拥有五年经验的开发者分享的工具类集合,覆盖了数据库连接、格式转换、文件操作和邮件发送等多个关键领域。下面,我们将详细探讨这些知识点。 1. **数据库连接**: - JDBC(Java Database Connectivity)是...
标题中的“自己用的工具类,自己写的”表明这是一个个人创建的、用于个人或特定项目使用的工具类集合。工具类通常包含一系列静态方法,提供通用的功能,如数据处理、日期时间操作、字符串处理等,方便在不同的代码...
日期工具类是 Android 开发中另一个常用的工具类,用于处理日期操作。日期工具类可以帮助我们快速地处理日期。 日期工具类通常包括各种日期操作方法,例如日期格式化、日期比较、日期计算等。我们可以根据需要选择...
分享常用的Java工具类,包括:日期,邮件,ZIP压缩解压缩,XML,HTTP,JSON,Freemarker,文件操作,图象,数组,验证码,日期,硬件信息读取,数学计算,随机数,路径,反射,正则,运行时RUNTIME,系统,汉字转...
1. **CheckUtils.java**:这是一个用于数据验证的工具类,它可能包含如检查空值、检查字符串的有效性、验证网络连接等方法。例如,`isNullOrEmpty()`方法用于判断字符串是否为空,`isNetworkAvailable()`方法可能...
在Java编程中,工具类通常是一些静态方法的集合,这些方法执行特定的功能,如日期操作、字符串处理或文件操作。在本例中,"导出PDF工具类"可能包含一系列静态方法,用于生成和导出PDF文件。这些方法可能包括创建PDF...
分享常用的Java工具类,包括:日期,邮件,ZIP压缩解压缩,XML,HTTP,JSON,Freemarker,文件操作,图象,数组,验证码,日期,硬件信息读取,数学计算,随机数,路径,反射,正则,运行时RUNTIME,系统,汉字转...
java 常用工具源码,多年工作积累,源码分享。...工作中多年积累常用工具,log封装,日期类,多线程操作,字符串处理,邮件发送,http工具类,页面处理,汉字拼音,ftp ,md5, secret,ValidatorStringEx,Xml类。
通常,一个工具类库会包含各种不同分类的工具类,如字符串处理、日期时间、网络请求、图片处理、文件操作等。在“MyUtils-master”中,我们可以期待找到这些功能的实现。 1. 字符串处理:在Android开发中,字符串...
例如,我们可以看到压缩包内有一个名为“工具类”的文件,这可能包含了以下几种常见的工具类: 1. **日期时间工具类**:这类工具类提供对日期和时间的操作,如格式化、解析、比较等,例如Java中的`java.time`包或者...
【标题】"安卓开发框架工具类相关-Android福利资源分享220个代码实例.rar" 涵盖了丰富的Android应用程序开发中常用框架和工具类的代码实例,旨在帮助开发者提高编程效率,理解和掌握Android开发的关键技术。...
在微信小程序的开发过程中,"工具类"是指一组具有特定功能的代码模块,它们可以被复用,帮助开发者简化常见的编程任务,比如数据处理、网络请求、日期时间操作等。XCX-scaffold案例源码很可能是为了解析和展示如何...
在描述中提到了一个博客链接(https://lspgdut.iteye.com/blog/1485925),这可能是作者分享这些工具类的详细解释和使用场景。通过这个链接,我们可以深入理解每个工具类的设计理念和具体用途,学习作者在实际开发中...