总结Java常用的时间相关转化

Java常用的时间相关转化

下面代码的一些变量基本解释说明
datePattern:时间对应的字符串格式
date: 时间
dateStr:字符串格式的时间
指定的几个常量:

public static final long DAYTIMESTAMP = 24 * 60 * 60 * 1000L;
public static final  String SHORTDATEFORMATER = "yyyy-MM-dd";
public static final  String LONGDATEFORMATER = "yyyy-MM-dd HH:mm:ss";

1.时间转化为指定格式的字符串

public static final String convertDateToString(String datePattern, Date date) {
		String returnValue = null;
		if (date != null) {
			SimpleDateFormat df = new SimpleDateFormat(datePattern);
			returnValue = df.format(date);
		}
		return (returnValue);
	}

2.指定格式的字符串转时间

public static final Date convertStringToDate(String datePattern,String dateStr) {
		if( StringUtils.isBlank(dateStr) ){
			return null;
		}
		SimpleDateFormat df = null;
		Date date = null;
		df = new SimpleDateFormat(datePattern);
		try {
			date = df.parse(dateStr);
		} catch (ParseException pe) {
			log.error("异常![{}]",pe);
			return null;
		}
		return (date);
	}

3.判断日期是否未过期

public static final boolean isNonExpired(Date date){
		Calendar calendarNow = Calendar.getInstance();
		calendarNow.setTime(calendarNow.getTime());
		Calendar calendarGiven = Calendar.getInstance();
		calendarGiven.setTime(date);
		return calendarNow.before(calendarGiven);
	}

4.判断日期是否过期

public static final boolean isExpired(Date date){
		Calendar calendarNow = Calendar.getInstance();
		calendarNow.setTime(calendarNow.getTime());
		Calendar calendarGiven = Calendar.getInstance();
		calendarGiven.setTime(date);
		return calendarNow.after(calendarGiven);
	}

5.判断两个日期大小

public static final int compare( Date firstDate,Date secondDate ){
		return firstDate.compareTo(secondDate);
	}

备注:如果第一个日期参数大于第二个日期返回 1;如果两个日期相等返回0;如果第一个日期小于第二个日期 返回-1

6.获取指定时间前n个月的时间

public static Date DateMinus(Date date,int month){
		  Calendar calendar = Calendar.getInstance();
		  calendar.setTime(date);
		  calendar.add(Calendar.MONTH, -month);
		return calendar.getTime();
	}

7.获取指定日期之前指定天,包含传入的那一天

public static String getDaysBefore(Date date, int days) {
		Date td = new Date(date.getTime() - DAYTIMESTAMP * days);
		return DateUtils.convertDateToString(SHORTDATEFORMATER, td);
	}

8.获取指定日期之前指定天的数组,包含传入的那一天

public static List<String> getDaysBeforeArray(Date date, int days){
		List<String> resultList = new ArrayList<>();
		for (int i = days-1; i >= 0; i--) {
			resultList.add(getDaysBefore(date, i));
		}
		return resultList;
	}

备注:配合第七条使用

9.获取指定时间的0点

public static Date getDayStartTimeByDate(Date date){
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.set(Calendar.HOUR_OF_DAY, 0);
		calendar.set(Calendar.MINUTE, 0);
		calendar.set(Calendar.SECOND, 0);
		return calendar.getTime();
	}

10.获取指定日期的最后一秒

public static Date getDayEndOfDay(Date date){
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.set(Calendar.HOUR_OF_DAY, 23);
		calendar.set(Calendar.MINUTE, 59);
		calendar.set(Calendar.SECOND, 59);
		return calendar.getTime();
	}

11.获取当时时间前一个小时时间

public static Date getDayBeforeHour(){
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-1);
		return calendar.getTime();
	}

12.获取两个时间之间相差的分钟数

public static String getdifferMinute(Date endDate, Date nowDate){
		long nm = 1000 * 60;
		// 获得两个时间的毫秒时间差异
		long diff = endDate.getTime() - nowDate.getTime();
		return String.valueOf(diff/nm);
	}

备注:endDate 相对大的时间;nowDate 相对小的时间;可以在入参的时候就判断好,或者可以在方法内优化,即调用第五条操作根据返回值进行操作就可以。

13.获取两个时间之间间隔多少天

public static int differentDaysByMillisecond(Date date1,Date date2){
		return (int) ((date2.getTime() - date1.getTime()) / (1000*3600*24));
	}

14.获取两个时间之间的日期集合

public static List<Date> getDatesBetweenTwoDate(Date beginDate, Date endDate ) {
        List<Date> dates = new ArrayList<>();
        try{
            dates.add(beginDate);// 把开始时间加入集合
            Calendar cal = Calendar.getInstance();
            // 使用给定的 Date 设置此 Calendar 的时间
            cal.setTime(beginDate);
            while (true) {
                // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
                cal.add(Calendar.DAY_OF_MONTH, 1);
                // 测试此日期是否在指定日期之后
                if (endDate.after(cal.getTime())) {
                    dates.add(cal.getTime());
                } else {
                    break;
                }
            }
            dates.add(endDate);// 把结束时间加入集合
        }catch(Exception e){
            log.error("获取时间集合异常");
        }

        return dates;
    }

15.获取当月月初第一天

public static String getMonthFirstDay() {
		SimpleDateFormat format = new SimpleDateFormat(SHORTDATEFORMATER);
		Calendar c = Calendar.getInstance();
		c.add(Calendar.MONTH, 0);
		c.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
		return format.format(c.getTime());
	}

16.时间戳格式化

public static String parseDate(Long timeStamp){
		String resDate = "";
		if(null != timeStamp){
			Date date = new Date(timeStamp);
			SimpleDateFormat smf = new SimpleDateFormat(LONGDATEFORMATER);
			resDate= smf.format(date);
		}
		return resDate;
	}

17.获取今天是当前年第n周

public static int getWeekOfYear(String dateStr,int startCalendar){
        SimpleDateFormat format = new SimpleDateFormat(SHORTDATEFORMATER);
        Calendar calendar = Calendar.getInstance();
        try {
            Date date = format.parse(dateStr);
            calendar.setFirstDayOfWeek(startCalendar);
            calendar.setTime(date);
        }
        catch (Exception error) {
            error.printStackTrace();
        }
        return calendar.get(Calendar.WEEK_OF_YEAR);
    }

备注:startCalendar是指从周几作为本周的开始周期 例:以周五作为一周的开始则startCalendar传值为Calendar.FRIDAY

总结:目前常用到的时间相关的操作大概就是这些,其中一些没有覆盖到的可以通过上面相关操作调整就能得到,如有遗漏请在评论中补充,我及时调整增加。

到此这篇关于总结Java常用的时间相关转化的文章就介绍到这了,更多相关Java时间相关转化内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解决java字符串转换成时间Unparseable date出错的问题

    今天在写代码的时候,在将字符串转换成时间的时候,出现了这样的问题. java.text.ParseException: Unparseable date: "2017-1-1 00:00:00" DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Date start = df.parse(startTime); Date stop = df.parse(stopTime); long timeSpan = sto

  • java_时间戳与Date_相互转化的实现代码

    1.时间戳的定义 时间戳是指文件属性里的创建.修改.访问时间. 数字时间戳技术是数字签名技术一种变种的应用.在电子商务交易文件中,时间是十分重要的信息.在书面合同中,文件签署的日期和签名一样均是十分重要的防止文件被伪造和篡改的关键性内容.数字时间戳服务(DTS:digital time stamp service)是网上电子商务安全服务项目之一,能提供电子文件的日期和时间信息的安全保护. 时间戳(time-stamp)是一个经加密后形成的凭证文档,它包括三个部分: 需加时间戳的文件的摘要(dig

  • Java8时间接口LocalDateTime详细用法

    一.新时间日期API常用.重要对象介绍 ZoneId: 时区ID,用来确定Instant和LocalDateTime互相转换的规则 Instant: 用来表示时间线上的一个点(瞬时) LocalDate: 表示没有时区的日期, LocalDate是不可变并且线程安全的 LocalTime: 表示没有时区的时间, LocalTime是不可变并且线程安全的 LocalDateTime: 表示没有时区的日期时间, LocalDateTime是不可变并且线程安全的 Clock: 用于访问当前时刻.日期.

  • java8新特性之日期时间API

    jdk8之前 一.java.lang.System long times = System.currentTimeMillis(); //返回的是当前时间与1970年1月1月1日0分0秒之间以毫秒为单位的时间差 //称为时间戳 System.out.println(times); 二.java.util.Date And java.sql.Date 将java.util.Date 对象转换为java.sql.Date对象: //将java.util.Date 对象转换为java.sql.Date

  • Java 进行时间处理的步骤

    一.Calendar (1).Calender介绍 Calendar的中文翻译是日历,实际上,在历史上有着许多种计时的方法.所以为了计时的统一,必需指定一个日历的选择.那现在最为普及和通用的日历就是"Gregorian Calendar".也就是我们在讲述年份时常用"公元**年".Calendar 在 Java 中是一个抽象类(Abstract Class),GregorianCalendar 是它的一个具体实现.Calendar.getInstance()中所获得

  • 总结Java常用的时间相关转化

    Java常用的时间相关转化 下面代码的一些变量基本解释说明 datePattern:时间对应的字符串格式 date: 时间 dateStr:字符串格式的时间 指定的几个常量: public static final long DAYTIMESTAMP = 24 * 60 * 60 * 1000L; public static final String SHORTDATEFORMATER = "yyyy-MM-dd"; public static final String LONGDAT

  • 分享Java常用几种加密算法(四种)

    对称加密算法是应用较早的加密算法,技术成熟.在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去.收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文.在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥. 简单的java加密算法有: BASE 严格地说,属于编码格式,而非加密算法 MD(Mes

  • java常用工具类 IP、File文件工具类

    本文实例为大家分享了java常用工具类的具体实现代码,供大家参考,具体内容如下 IP工具类 package com.jarvis.base.util; import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; /** * * * @Title: IpMacUtil.java * @Package com.jarvis.base.util * @Description

  • java常用工具类 Reflect反射工具类、String字符串工具类

    本文实例为大家分享了java常用工具类的具体代码,供大家参考,具体内容如下 Reflect反射工具类 package com.jarvis.base.util; /** * * * @Title: ReflectHelper.java * @Package com.jarvis.base.util * @Description: 反射工具类 * @version V1.0 */ public class ReflectHelper { /** * 提指定的类载入以系统中 * * @param n

  • Java常用类库Apache Commons工具类说明及使用实例详解

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils 提供了对于JavaBean进行各种操作,克隆对象,属性等等. Betwixt XML与Java对象之间相互转换. Codec 处理常用的编码方法的工具类包 例如DES.SHA1.MD5.Base64等. Collections java集合框架操作. Compress java提供文件打包 压缩类库. Con

  • 带你了解Java常用类小结

    目录 Java常用类 包装类 包装类中的常量 包装类的构造方法 包装类中的常用方法 Math类 枚举 枚举定义 枚举的常见方法 总结 Java常用类 包装类 由于Java语言中的基本类型不是面向对象,并不具备对象的性质,实际使用存在很多不便.Java在java.lang包中提供了八种基本类型对应的包装类,可以方便地将它们转化为对象进行处理,并且可以调用一些方法.Java中基本类型和包装类的对应关系如下表所示: 基本数据类型名称 包装类名称 byte Byte short Short int In

  • Java常用类之日期相关类使用详解

    目录 日期相关类 1.Date类 2.DateFormat类 3.Calendar类 日期相关类 1.Date类 在标准Java类库中包含一个Date类,它的对象表示一个特定的瞬间,精确到毫秒.在网上商城下单时,在对报销单进行审核时,都需要获取当前的时间,通过Date类就可以完成. 例子:Date类的使用 package li.normalclass.date; import java.util.Date; public class TestDate { public static void m

  • Java常用时间工具类总结(珍藏版)

    目录 常量介绍 相关方法 工具类源码 肝了两天,重新整理了下时间工具类,以后我就以该时间工具类进行项目开发了,后会不定期更新功能,也欢迎留言需求,让工具类不断的完善. 常量介绍 相关方法 工具类源码 package com.zyq.util.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar;

  • Java常用加密算法实例总结

    本文实例总结了Java常用加密算法.分享给大家供大家参考,具体如下: 项目中第一次深入地了解到加密算法的使用,现第一阶段结束,将使用到的加密算法和大家分享一下: 首先还是先给大家普及一下常用加密算法的基础知识 基本的单向加密算法 BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorithm,安全散列算法) 复杂的加密算法 RSA(算法的名字以发明者的名字命名:Ron Rives

  • Java常用的时间工具类实例

    本文实例讲述了Java常用的时间工具类.分享给大家供大家参考,具体如下: package org.zhy.date; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * 时间类型工具类 * * @author zhengyi * */ pu

随机推荐