java项目中时间比较,[工具类-DataUtils]java项目中的时间工具类

平时在项目开发中可能很多地方需要处理时间问题的方法,这里总结一些常用的时间方法:

1eaa3b4f73b5

图片来自简书app

import java.text.DateFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.TimeZone;

/**

* @Description

* @author liwang

* @date 2017年11月14日

* @version

*/

public class DateUtil {

/**

* 根据时间字符串获取日期

* @param dataStr 时间字符串

* @return 日期

*/

public static Date tranStrToDate(String dataStr) {

try {

DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

return format.parse(dataStr);

}

catch (ParseException e) {

e.printStackTrace();

}

return null;

}

/**

* 根据传入时间转换为毫秒值,附加纳秒后六位

* @param dateTime 日期

* @return String

* @throws ParseException 异常

*/

public static String getTimeToNanos(String dateTime) throws ParseException {

Calendar c = Calendar.getInstance();

c.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateTime));

Long curNanos = Math.abs(System.nanoTime());

String nanos = curNanos.toString();

return c.getTimeInMillis() + nanos.substring(nanos.length() - 6);

}

/**

* 根据传入的毫秒值转换为yyyy-MM-dd HH:mm:ss的日期字符串

* @param dateTime 日期

* @return String

*/

public static String getDateStrByTimeMillis(long dateTime) {

Date date = new Date(dateTime);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

return sdf.format(date);

}

/**

* 获取当前日期

* @return 当前日期,格式:yyyy-MM-dd

*/

public static String getCurDate() {

DateFormat format = new SimpleDateFormat("yyyy-MM-dd");

return format.format(new Date());

}

/**

* 获取当前时间

* @return 当前时间,格式:yyyy-MM-dd HH:mm:ss

*/

public static String getCurTime() {

DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

return format.format(new Date());

}

/**

* 获取系统当前默认时区与指定时区的时间差.(单位:毫秒)

* @param timeZoneId 时区Id

* @param time 时间

* @return 系统当前默认时区与指定时区的时间差.(单位:毫秒)

*/

public static long getDiffTimeZoneRawOffset(String timeZoneId, long time) {

long diffTime = TimeZone.getDefault().getRawOffset() - TimeZone.getTimeZone(timeZoneId).getRawOffset();

long curTime = System.currentTimeMillis();

return time - curTime + diffTime;

}

/**

* 获取当天结束时间

* @return 毫秒数

*/

public static Long getEndTime() {

Calendar todayEnd = Calendar.getInstance();

todayEnd.set(Calendar.AM_PM, 0);

todayEnd.set(Calendar.HOUR, 23);

todayEnd.set(Calendar.MINUTE, 59);

todayEnd.set(Calendar.SECOND, 59);

todayEnd.set(Calendar.MILLISECOND, 999);

return todayEnd.getTime().getTime();

}

/**

* 添加日期

* @author

* @date

* @param dateTime 时间

* @param days 天

* @return String

*/

public static String addDays(String dateTime, int days) {

try {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Calendar date = Calendar.getInstance();

date.setTime(sdf.parse(dateTime));

date.set(Calendar.DATE, date.get(Calendar.DATE) + days);

return sdf.format(date.getTime());

}

catch (Exception e) {

return dateTime;

}

}

/**

* 添加秒

* @author

* @date

* @param dateTime 时间

* @param secondes 秒

* @return String

*/

public static String addSecondes(String dateTime, int secondes) {

try {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Calendar date = Calendar.getInstance();

date.setTime(sdf.parse(dateTime));

date.set(Calendar.SECOND, date.get(Calendar.SECOND) + secondes);

return sdf.format(date.getTime());

}

catch (Exception e) {

return dateTime;

}

}

/**

*

* @author

* @date

* @param startTime 开始时间

* @return long

*/

public static long getDiffTimeByNow(String startTime) {

return getDiffTime(startTime, null);

}

/**

*

* @author

* @date

* @param startTime 开始时间

* @param endTime 结束时间

* @return long

*/

public static long getDiffTime(String startTime, String endTime) {

try {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date startDate = sdf.parse(startTime);

Date endDate = null;

if (StringUtil.isNotEmpty(endTime)) {

endDate = sdf.parse(endTime);

}

else {

endDate = new Date();

}

return startDate.getTime() - endDate.getTime();

}

catch (Exception e) {

return 0;

}

}

/**

* 解析时间戳

* @author

* @date

* @param time 时间

* @return String

*/

public static String timestampFormat(String time) {

String yyyy = time.substring(0, 4);

String mm = time.substring(4, 6);

String dd = time.substring(6, 8);

String hh = time.substring(8, 10);

String min = time.substring(10, 12);

String ss = time.substring(12, 14);

return yyyy + "-" + mm + "-" + dd + " " + hh + ":" + min + ":" + ss;

}

/**

*

* @author 获得指定日期之前天数的日期

* @date

* @param d 日期

* @param day 天

* @return Date

*/

public static Date getDateDaysBefore(Date d, int day) {

Calendar now = Calendar.getInstance();

now.setTime(d);

// now.set(Calendar.DATE, now.get(Calendar.DATE) - day);

now.add(Calendar.DATE, -day);

return now.getTime();

}

/**

* 获取指定日期之后多少天的日期

* @author

* @date

* @param d 日期

* @param day 天

* @return Date

*/

public static Date getDateDaysAfter(Date d, int day) {

Calendar now = Calendar.getInstance();

now.setTime(d);

// now.set(Calendar.DATE, now.get(Calendar.DATE) + day);

now.add(Calendar.DATE, day);

return now.getTime();

}

/**

*

* @author 获取指定时间,之前几个月前的时间

* @date

* @param d 日期

* @param month 月份

* @return Date

*/

public static Date getDateMonthsBefore(Date d, int month) {

Calendar now = Calendar.getInstance();

now.setTime(d);

// now.set(Calendar.DATE, now.get(Calendar.MONTH) - month);

now.add(Calendar.MONTH, -month);

return now.getTime();

}

/**

* 获取指定时间,之后几个月后的时间

* @author

* @date

* @param d 日期

* @param month 月份

* @return Date

*/

public static Date getDateMonthsAfter(Date d, int month) {

Calendar now = Calendar.getInstance();

now.setTime(d);

// now.set(Calendar.DATE, now.get(Calendar.MONTH) + month);

now.add(Calendar.MONTH, month);

return now.getTime();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值