Java日期时间工具类集合

以你之姓@ 2024-04-17 05:24 135阅读 0赞
  1. 先上日期字符格式
  2. public static final String DefaultDateFormat = "yyyy-MM-dd";
  3. public static final String dateFormatSimple = "yyyyMMdd";
  4. public static final String defaultDateTimeFormat = "yyyy-MM-dd HH:mm:ss";

1、转换日期为特定的格式字符串

  1. public static String formatDate(Date date, String format) {
  2. if (date == null){
  3. return null;
  4. }
  5. SimpleDateFormat sdf;
  6. try {
  7. sdf = new SimpleDateFormat(format);
  8. return sdf.format(date);
  9. } catch (Exception e) {
  10. return null;
  11. }
  12. }

2、String时间字符串转换为Timestamp时间戳

  1. public static Timestamp stringToTimestamp(String dateTimeStr, String dateFormat) {
  2. SimpleDateFormat sdf;
  3. try {
  4. sdf = new SimpleDateFormat(dateFormat);
  5. return new Timestamp(sdf.parse(dateTimeStr).getTime());
  6. } catch (Exception e) {
  7. logger.error("转换失败!" + e.getMessage(), e);
  8. return null;
  9. }
  10. }

3、验证日期是否有效

  1. public static boolean isValidateDate(String date, String dateFormat) {
  2. SimpleDateFormat df = new SimpleDateFormat(dateFormat);
  3. /**
  4. * 是否严格解析日期,如果 1/55/1999这种格式是错误日期格式,setLenient(true)时会自动转化为2003年的日期,55个月为4年
  5. * 如果设置为false,则会抛异常,不解析格式,即这种日期格式是错误的
  6. */
  7. df.setLenient(false);
  8. try {
  9. df.parse(date);
  10. } catch (ParseException e) {
  11. return false;
  12. }
  13. return true;
  14. }

4、**将String字符时间按照指定格式转化为Date时间**

  1. public static Date parseDate(String dateStr, String dateFormat) {
  2. SimpleDateFormat sdf;
  3. try {
  4. sdf = new SimpleDateFormat(dateFormat);
  5. return sdf.parse(dateStr);
  6. } catch (Exception e) {
  7. throw new RuntimeException("日期格式不正确");
  8. }
  9. }

5、获取当前日期 n天后的日期

  1. public static String getNextNDate(int n) {
  2. try {
  3. Calendar cal = Calendar.getInstance();
  4. cal.add(Calendar.DATE, n);
  5. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  6. return df.format(cal.getTime());
  7. } catch (Exception e) {
  8. throw new RuntimeException("进行日期运算时输入的参数不符合系统规格." + e);
  9. }
  10. }

6、获取指定日期n天后的日期

  1. public static Date getNextNDate(Date date, int nString format) {
  2. try {
  3. String dateStr = DateFormatUtil.format(date, defaultDateFormat);
  4. Calendar cal = Calendar.getInstance();
  5. String year = dateStr.substring(0, 4);
  6. String month = dateStr.substring(5, 7);
  7. String day = dateStr.substring(8, 10);
  8. cal.set(Calendar.YEAR, Integer.parseInt(year));
  9. cal.set(Calendar.MONTH, Integer.parseInt(month) - 1); // Calendar 计算月份从0开始
  10. cal.set(Calendar.DATE, Integer.parseInt(day));
  11. cal.add(Calendar.DATE, n); // 做日期加法的运算
  12. SimpleDateFormat df = new SimpleDateFormat(format);
  13. return df.format(cal.getTime());
  14. } catch (Exception e) {
  15. throw new RuntimeException("进行日期运算时输入得参数不符合系统规格." + e);
  16. }
  17. }

7、获取指定日期n天前的日期

  1. cal.add(Calendar.DATE, 0 - n); //其他代码相似,只需变成负数

8、获取指定日期前n个月、后n个月、前几年、后几年的日期

  1. cal.add(Calendar.MONTH, 0 - n); // 只需在month这里做减法改变
  2. cal.add(Calendar.MONTH, n); // 只需在month这里做加法改变
  3. cal.add(Calendar.YEAR, n);
  4. cal.add(Calendar.YEAR, 0 - n);

9、日期比较

  1. public static int compareDate(String DATE1, String DATE2) {
  2. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  3. try {
  4. Date dt1 = df.parse(DATE1);
  5. Date dt2 = df.parse(DATE2);
  6. if (dt1.getTime() > dt2.getTime()) {
  7. return 1;
  8. } else if (dt1.getTime() < dt2.getTime()) {
  9. return -1;
  10. } else {
  11. return 0;
  12. }
  13. } catch (Exception exception) {
  14. exception.printStackTrace();
  15. }
  16. return 0;
  17. }

10、计算2个日期之间相差天数

直接通过计算两个日期的毫秒数,他们的差除以一天的毫秒数,即可得到我们想要的两个日期相差的天数

  1. public static int differentDaysByMillisecond(Date date1,Date date2)
  2. {
  3. int days = (int) ((date2.getTime() - date1.getTime()) / (1000*3600*24));
  4. return days;
  5. }

发表评论

表情:
评论列表 (有 0 条评论,135人围观)

还没有评论,来说两句吧...

相关阅读